Пятница, 29 Марта 2024, 08:11

Приветствую Вас Гость

[ Новые сообщения · Игроделы · Правила · Поиск ]
  • Страница 1 из 1
  • 1
Форум игроделов » Программирование » C/C++ » Ошибка при создания окна Win32 (объясните что не так)
Ошибка при создания окна Win32
imperator12Дата: Вторник, 02 Августа 2011, 15:48 | Сообщение # 1
почетный гость
Сейчас нет на сайте
Доброго времени суток. Недавно начал изучать Win32 и вот возникла проблема при создании окна.

Вот код
Code
#define WIN32_LEAN_AND_MEAN   
#include<windows.h>
#include<windowsx.h>
#include<stdio.h>
#include<math.h>

#define WINDOW_CLASS_NAME12 "WINCLASS1"

LRESULT CALLBACK WindowProc(HWND hwnd,UINT msg,WPARAM wparam,LPARAM lparam)
{
   PAINTSTRUCT ps;
   HDC hdc;

   switch(msg)
   {
   case WM_CREATE:
    {
     return (0);
    }break;
   case WM_PAINT:
    {
     hdc = BeginPaint(hwnd,&ps);
      EndPaint(hwnd,&ps);
      return (0);
    }break;
   case WM_DESTROY:
    {
     PostQuitMessage(0);
     return (0);
    }break;
   default: break;
   }
   return (DefWindowProc(hwnd,msg,wparam,lparam));
}

int WINAPI WinMain(    HINSTANCE hinstance,
       HINSTANCE hprevinstance,
       LPSTR lpcmdline,
       int ncmdshow)
{
   WNDCLASSEX windclass;
   HWND hwnd;
   MSG msg;

   windclass.cbSize = sizeof(WNDCLASSEX);
   windclass.style = CS_DBLCLKS |CS_OWNDC|CS_HREDRAW|CS_VREDRAW;
   windclass.lpfnWndProc = WindowProc;
   windclass.cbClsExtra = 0;
   windclass.cbWndExtra = 0;
   windclass.hInstance = hinstance;
   windclass.hCursor    = LoadCursor(NULL,IDC_ARROW);
   windclass.hbrBackground = (HBRUSH)GetStockObject(BLACK_BRUSH);
   windclass.lpszMenuName = NULL;
   windclass.lpszClassName = WINDOW_CLASS_NAME12;
   windclass.hIcon = LoadIcon(NULL,IDI_APPLICATION);
windclass.hIconSm = LoadIcon(NULL, IDI_APPLICATION);

   if(!RegisterClassEx(&windclass))
   MessageBox(NULL,"Problem1","Error1",MB_OK);
   return(0);

if (!(hwnd = CreateWindowEx(NULL,                  
                    WINDOW_CLASS_NAME12,      
            "Your Basic Window++",   
            WS_BORDER | WS_VISIBLE,
             0,0,       
            400,400,    
            NULL,       
            NULL,       
            hinstance,
            NULL)))   
    MessageBox(NULL,"Problem","Error",MB_OK);
   return(0);

   while(TRUE)
   {
    if(PeekMessage(&msg,hwnd,0,0,PM_REMOVE))
    {
     if(msg.message == WM_QUIT)
      break;
     TranslateMessage(&msg);
     DispatchMessage(&msg);
      
    }
   }

   return(msg.wParam);
}


Пожалуйста объясните что не так.


Сообщение отредактировал imperator12 - Вторник, 02 Августа 2011, 16:19
froexДата: Вторник, 02 Августа 2011, 16:41 | Сообщение # 2
Руководитель Froexilize team
Сейчас нет на сайте
imperator12, ты забыл написать, что за проблема возникла. Судя по названию темы, возникает какая-то ошибка. Какая?

Не превращайте форум в чат. Пишите более развернуто и понятно - всё равно вас попросят объяснить подробнее.
Алгоритмы, программирование, оптимизация, тестирование, ведение проектов.
Ищу художника, дизайнера, тестера, программистов С и С++
Обучаю процессам разработки и программированию.
KornivalДата: Вторник, 02 Августа 2011, 16:49 | Сообщение # 3
The Witcher
Сейчас нет на сайте
Code

     if(!RegisterClassEx(&windclass))     
       MessageBox(NULL,"Problem1","Error1",MB_OK);     
       return(0);

Поменяй на
Code

      if(!RegisterClassEx(&windclass))     
      {
       MessageBox(NULL,"Problem1","Error1",MB_OK);     
       return(0);
      }

Все что должно выполняться при if(условие) должно быть заключено в фигурные скобки.
То же самое при проверке значения возвращаемого CreateWindowEx
То есть
Code

if (!(hwnd = CreateWindowEx(NULL,                      
                        WINDOW_CLASS_NAME12,          
                "Your Basic Window++",       
                WS_BORDER | WS_VISIBLE,     
                 0,0,           
                400,400,        
                NULL,           
                NULL,           
                hinstance,     
                NULL)))       
        MessageBox(NULL,"Problem","Error",MB_OK);     
       return(0);

Нужно поменять на
Code

if (!(hwnd = CreateWindowEx(NULL,                      
                        WINDOW_CLASS_NAME12,          
                "Your Basic Window++",       
                WS_BORDER | WS_VISIBLE,     
                 0,0,           
                400,400,        
                NULL,           
                NULL,           
                hinstance,     
                NULL)))       
     {
        MessageBox(NULL,"Problem","Error",MB_OK);     
       return(0);
     }


Сообщение отредактировал Kornival - Вторник, 02 Августа 2011, 16:57
imperator12Дата: Пятница, 05 Августа 2011, 13:43 | Сообщение # 4
почетный гость
Сейчас нет на сайте
Сенк я это знаю просто сообщения добавлял в самом конце вот и забыл.

Добавлено (05.08.2011, 13:43)
---------------------------------------------
А еще помогите пожалуйста в этом приложении хочу добавить свою иконку все сделал но res файл не создаётся. Работаю в експресс. Читал что его можно создать самому но что в ньом делать что писать или рисовать?

Сообщение отредактировал imperator12 - Вторник, 02 Августа 2011, 18:05
FlowДата: Пятница, 05 Августа 2011, 13:56 | Сообщение # 5
-=[.FSProduction.]=-
Сейчас нет на сайте
imperator12, скачай любой редактор ресурсов (Resource Hacker, Restorator)...и поменяй иконку через него...
Саму иконку, нужно рисовать в ручную...можно использовать Paint.Net, он умеет сохранять в формат .ico
imperator12Дата: Пятница, 05 Августа 2011, 17:09 | Сообщение # 6
почетный гость
Сейчас нет на сайте
я так и делал + rc файлы нарисовал но експресс не создает res файлы их можно создать самому но что в них нужно делать

Добавлено (05.08.2011, 17:09)
---------------------------------------------
Сейчас установил Профешинал и все работает но я не знаю триал ето или крякнута как узнать?

froexДата: Пятница, 05 Августа 2011, 17:12 | Сообщение # 7
Руководитель Froexilize team
Сейчас нет на сайте
Quote (imperator12)
как узнать?

Подожди 30 или 90 дней


Не превращайте форум в чат. Пишите более развернуто и понятно - всё равно вас попросят объяснить подробнее.
Алгоритмы, программирование, оптимизация, тестирование, ведение проектов.
Ищу художника, дизайнера, тестера, программистов С и С++
Обучаю процессам разработки и программированию.
imperator12Дата: Пятница, 05 Августа 2011, 17:15 | Сообщение # 8
почетный гость
Сейчас нет на сайте
А куда вводить ключ и не скока стоит лц? И можно удалять устанавливать)?

Сообщение отредактировал imperator12 - Пятница, 05 Августа 2011, 17:16
ilya7834Дата: Пятница, 05 Августа 2011, 19:23 | Сообщение # 9
Работаю на Irrlicht Engine
Сейчас нет на сайте
твоя мой не понимай.
С визуал стьюдио не сталкивался, но уроков по установке в инете полно.


На синем небе
Попробуй-ка разглядеть
Синюю звезду
froexДата: Пятница, 05 Августа 2011, 20:54 | Сообщение # 10
Руководитель Froexilize team
Сейчас нет на сайте
imperator12, на минутку стань программистом. Работает? Не трогай!

Не превращайте форум в чат. Пишите более развернуто и понятно - всё равно вас попросят объяснить подробнее.
Алгоритмы, программирование, оптимизация, тестирование, ведение проектов.
Ищу художника, дизайнера, тестера, программистов С и С++
Обучаю процессам разработки и программированию.
Stas96Дата: Пятница, 05 Августа 2011, 21:43 | Сообщение # 11
Programmer and Game Designer
Сейчас нет на сайте
imperator12, Если VisualStudio 2010 то срок действия лицензии 90 дней(за другие версии сказать не могу,стоит только эта)
imperator12Дата: Понедельник, 08 Августа 2011, 17:34 | Сообщение # 12
почетный гость
Сейчас нет на сайте
А я могу когда кончится срок удалить и заново установить?

Добавлено (07.08.2011, 17:39)
---------------------------------------------

Добавлено (08.08.2011, 17:34)
---------------------------------------------
Все у всьому разобрался

Сообщение отредактировал imperator12 - Воскресенье, 07 Августа 2011, 17:41
KirchikДата: Вторник, 09 Августа 2011, 03:37 | Сообщение # 13
был не раз
Сейчас нет на сайте
найди лучше бесплатную альтернативу smile
imperator12Дата: Вторник, 09 Августа 2011, 12:57 | Сообщение # 14
почетный гость
Сейчас нет на сайте
Quote (Kirchik)
найди лучше бесплатную альтернативу


Так я и разобрался с експресс
Форум игроделов » Программирование » C/C++ » Ошибка при создания окна Win32 (объясните что не так)
  • Страница 1 из 1
  • 1
Поиск:

Все права сохранены. GcUp.ru © 2008-2024 Рейтинг