Модераторы: feodorv, GremlinProg, xvr, Fixin
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Проблемка с создание окна 
:(
    Опции темы
NetGod
  Дата 19.6.2008, 20:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 40
Регистрация: 22.3.2008
Где: город Мурманск, с трана Россия

Репутация: нет
Всего: нет



Вроде верно создаю окно, но высвечиваются ошибки... Подскажите что я не так сделал smile 


Код



#include <windows.h>


LRESULT CALLBACK MainWinProc(HWND hwnd, UINT msg, WPARAM wparam, LPARAM lparam)
{
    switch(msg)
    {
    case WM_PAINT:
        break;
    case WM_DESTROY:
        {
            PostQuitMessage(0);
            return 0;
        } break;
    }
    return (DefWindowProc(hwnd, msg, wparam, lparam);
}


typedef struct_WNDCLASS {
    UINT cbSize;
    UINT style; 
    WNDPROC LpfnWndProc; 
    int cbClsExtra;
    int cbWndExtra; 
    HANDLE hInstance; 
    HICON hIcon; 
    HCURSOR hCursor; 
    HBRUSH hbrBackground; 
    LPCTSTR IpszMenuName;
    LPCTSTR IpszClassName; 
    HICON hIconSm; 
} WNDCLASS; 

WINAPI WINMAIN(HINSTANCE hinstance, 
               HINSTANCE hprivinstance, 
               int nCmdShow)
{
    WNDCLASS windowsclass; 
    windowsclass.cbSize = sizeof(WNDCLASS);
    windowsclass.style = CS_VREDRAW
    windowsclass.LpfnWndProc = MainWinProc;
    windowsclass.cbClsExtra = 0; 
    windowsclass.cbWndExtra = 0;
    windowsclass.hIcon = LoadIcon(NULL, IDI_APPALICATION); 
    windowsclass.hCursor = LoadCursor(NULL, IDC_ARROW); 
    windowsclass.hbrBackground = (HBRUSH)GetStockObject(GRAY_BRUSH);
    windowsclass.IpszMenuName = NULL;
    windowsclass.IpszClassName = "WindowsClass";
    windowsclass.HIconSm = LoadIcon(NULL, IDI_APPLICATION); 
    RegisterClassEx(&windowsclass); 
    HWND CreateWindowEx(DWORD dwExStyle,
                        LPCTSTR LpClassName, 
                        LPCTSTR LpWindowName, 
                        DWORD dwStyle,
                        int x, 
                        int y,
                        int nWidth,
                        int nHeight,
                        HWND hWindParent, 
                        HWND nMenu, 
                        HINSTANCE hInstance,
                        LPVOID LpParam);
    
    HWND hwnd; 
    MSG msg; 
    if(!(hwnd = CreateWindowsEx(NULL, "WNDCLASS", "Ag_Engine_Render", WS_OVERLAPPEDWINDOW|WS_VISIBLE, 
        0, 0, 500, 400, NULL, NULL, Hinstance, NULL)))
        return (0);
    ShowWindow(hwnd,ncmdshow); 
    UpdateWindow(hwnd); 
    
    while(GetMessage(&msg, NULL, 0, 0)
    {
        TranslateMessage(&msg);  
        DispatchMessage($msg);  
    }
    return(msg.wParam);
}



PM MAIL ICQ   Вверх
chaos
Дата 20.6.2008, 06:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Серийный программист
****


Профиль
Группа: Завсегдатай
Сообщений: 2979
Регистрация: 7.7.2004
Где: Екатеринбург

Репутация: 1
Всего: 44



NetGod, ошибок много.
с первого взгляда похоже что текст отсканен из книги и распознан
Код

DispatchMessage($msg);
Hinstance
LpParam
....


предлагаю вбить код руками, а там у же и разговаривать
PM WWW   Вверх
NetGod
Дата 20.6.2008, 07:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 40
Регистрация: 22.3.2008
Где: город Мурманск, с трана Россия

Репутация: нет
Всего: нет



chaos, Что там надо вбить руками? Oo
PM MAIL ICQ   Вверх
ama_kid
Дата 20.6.2008, 09:14 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


АСУТП-кодер
***


Профиль
Группа: Комодератор
Сообщений: 1460
Регистрация: 5.3.2007
Где: Москва

Репутация: 5
Всего: 95



NetGod, кажись, проще тебе сгенерировать средой новый Win32 проект, чем исправлять этот - слишком много косяков, походу кто-то его просто сгрёб в кучу с разных источников и попытался придать рабочий вид...  smile 


--------------------
самурай без меча подобен самураю с мечом, но только без меча 
PM MAIL   Вверх
NetGod
  Дата 20.6.2008, 09:26 (ссылка)   | (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 40
Регистрация: 22.3.2008
Где: город Мурманск, с трана Россия

Репутация: нет
Всего: нет



ama_kid, Большинсво ошибок исправил, осталось 2
Вот код:
Код

#include <windows.h>



LRESULT CALLBACK MainWinProc(HWND hwnd, UINT msg, WPARAM wparam, LPARAM lparam)
{
    switch(msg)
    {
    case WM_PAINT:
        break;
    case WM_DESTROY:
        {
            PostQuitMessage(0);
            return 0;
        } break;
    }
    return (DefWindowProc(hwnd, msg, wparam, lparam);
}



WINAPI WINMAIN(HINSTANCE hinstance, 
               HINSTANCE hprivinstance,
               int nCmdShow)
{
    WNDCLASS windowsclass; 
    windowsclass.cbSize = sizeof(WNDCLASS);
    windowsclass.style = CS_VREDRAW|CS_HREDRAW|CS_OWNDC|CS_DBLCLKS;
    windowsclass.LpfnWndProc = MainWinProc; 
    windowsclass.cbClsExtra = 0; 
    windowsclass.cbWndExtra = 0;
    windowsclass.hIcon = LoadIcon(NULL, IDI_APPALICATION); 
    windowsclass.hCursor = LoadCursor(NULL, IDC_ARROW); 
    windowsclass.hbrBackground = (HBRUSH)GetStockObject(GRAY_BRUSH);
    windowsclass.IpszMenuName = NULL;
    windowsclass.IpszClassName = "WindowsClass"; 
    windowsclass.HIconSm = LoadIcon(NULL, IDI_APPLICATION); 
    RegisterClass(&windowsclass);  îäèí ðàç
    
    HWND hwnd; 
    
    
    HWND hwnd = CreateWindow("WNDCLASS", "WindowRender", S_OVERLAPPEDWINDOW|WS_VISIBLE, 0, 0, 500, 400, NULL, NULL, Hinstance, NULL);
        
        
        
    MSG msg; 
    
    ShowWindow(hwnd,ncmdshow); 
    UpdateWindow(hwnd); 
    while(GetMessage(&msg, NULL, 0, 0)
    {
        TranslateMessage(&msg);  
        DispatchMessage($msg);    
    }
    return 0;
}



Это сообщение отредактировал(а) NetGod - 20.6.2008, 09:27
PM MAIL ICQ   Вверх
NetGod
Дата 20.6.2008, 10:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 40
Регистрация: 22.3.2008
Где: город Мурманск, с трана Россия

Репутация: нет
Всего: нет



Помогиите
PM MAIL ICQ   Вверх
NetGod
Дата 20.6.2008, 12:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 40
Регистрация: 22.3.2008
Где: город Мурманск, с трана Россия

Репутация: нет
Всего: нет



И ещё вопрос(что бы лишний и такой маленький топик не создавать), объясните взаимосвязь между 
Этим:
Код

WNDCLASS windowsclass;
windowsclass.LpfnWndProc = MainWinProc;


Этим:
Код

LRESULT CALLBACK MainWinProc(HWND hwnd, UINT msg, WPARAM wparam, LPARAM lparam)
{
    switch(msg)
    {
    case WM_PAINT:
        break;
    case WM_DESTROY:
        {
            PostQuitMessage(0);
            return 0;
        } break;
    }
    return (DefWindowProc(hwnd, msg, wparam, lparam);
}


И этим:
Код


    while(GetMessage(&msg, NULL, 0, 0)
    {
        TranslateMessage(&msg);  
        DispatchMessage($msg);    
    }


Я так понял что когда есть сообщения, то они передаются циклу(while(GetMessage.......) он их обрабатывает и передает их LRESULT CALLBACK MainWinProc....... Да?? Но зачем нужно объявлять указатель на эту функцию?? Объясните пожалуйчста в упрощенном виде как все это работает. Спасибо! 

Это сообщение отредактировал(а) NetGod - 20.6.2008, 12:06
PM MAIL ICQ   Вверх
ama_kid
Дата 20.6.2008, 13:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


АСУТП-кодер
***


Профиль
Группа: Комодератор
Сообщений: 1460
Регистрация: 5.3.2007
Где: Москва

Репутация: 5
Всего: 95



NetGod, читай тут до просветления  smile  Все, о чем ты спрашиваешь - там описано


--------------------
самурай без меча подобен самураю с мечом, но только без меча 
PM MAIL   Вверх
NetGod
Дата 20.6.2008, 13:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 40
Регистрация: 22.3.2008
Где: город Мурманск, с трана Россия

Репутация: нет
Всего: нет



ama_kid, Спасибо большое за полезную ссылку! smile 
PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Системное программирование и WinAPI"
Fixin
GremlinProg
xvr
feodorv
  • Большое количество информации и примеров с использованием функций WinAPI можно найти в MSDN
  • Описание сообщений, уведомлений и примеров с использованием компонент WinAPI (BUTTON, EDIT, STATIC, и т.п.), можно найти в MSDN Control Library
  • Непосредственно, перед созданием новой темы, проверьте заголовок и удостоверьтесь, что он отражает суть обсуждения.
  • После заполнения поля "Название темы", обратите внимание на наличие и содержание панели "А здесь смотрели?", возможно Ваш вопрос уже был решен.
  • Приводите часть кода, в которой предположительно находится проблема или ошибка.
  • Если указываете код, пользуйтесь тегами [code][/code], или их кнопочными аналогами.
  • Если вопрос решен, воспользуйтесь соответствующей ссылкой, расположенной напротив названия темы.
  • Один топик - один вопрос!
  • Перед тем как создать тему - прочтите это .

На данный раздел распространяются Правила форума и Правила раздела С++:Общие вопросы .


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Chipset, Step, Fixin, GremlinProg, xvr. feodorv.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Системное программирование и WinAPI | Следующая тема »


 




[ Время генерации скрипта: 0.0471 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.