Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Visual C++/MFC/WTL > При запуске программа вылетает


Автор: Serbis 27.1.2008, 11:04
Для определенных целей переписал winmain, почистив его от лишних обвесов. Наткнулся на уже знакомую мне проблему, запускаю дебаг, окно появляется и тут же исчезает. В консолях решал это проблему так.
Код

getch();

Как решить ее в Win32 Project,   ведь мастер это как то делает!
Код

#include "windows.h"

#define MAX_LOADSTRING 100

TCHAR szWindowClass[MAX_LOADSTRING];
TCHAR szTitle[MAX_LOADSTRING];

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));
}
int WINAPI WinMain(HINSTANCE hInstance,
                   HINSTANCE hprevinstance,
                   LPSTR lpcmdline,
                   int ncmdshow)
{
  WNDCLASSEX windowsclass;
  HWND hwnd;
  MSG msg;
  windowsclass.cbSize = sizeof(WNDCLASSEX);
  windowsclass.style = CS_DBLCLKS|CS_OWNDC|CS_HREDRAW|CS_VREDRAW;
  windowsclass.lpfnWndProc = MainWinProc;
  windowsclass.cbClsExtra = 0;
  windowsclass.cbWndExtra = 0;
  windowsclass.hInstance = hInstance;
  windowsclass.hIcon = LoadIcon(NULL, IDI_APPLICATION);
  windowsclass.hCursor = LoadCursor(NULL, IDC_ARROW);
  windowsclass.hbrBackground = (HBRUSH)GetStockObject(GRAY_BRUSH);
  windowsclass.lpszMenuName = NULL;
  windowsclass.lpszClassName = szWindowClass;
  windowsclass.hIconSm = LoadIcon(NULL, IDI_APPLICATION);
   if(!RegisterClassEx(&windowsclass))
       return(0);
   if(!(hwnd = CreateWindowEx(NULL,
       szWindowClass,
       szTitle,
       WS_OVERLAPPEDWINDOW|WS_VISIBLE,
       0, 0,
       500, 400,
       NULL,
       NULL,
       hInstance,
       NULL)))
        return(0);
   ShowWindow(hwnd, SW_SHOWDEFAULT);
   UpdateWindow(hwnd);
   while(GetMessage(&msg, NULL, 0, 0));
   {
       TranslateMessage(&msg);
       DispatchMessage(&msg);
   }
   return(msg.wParam);
}
  

Автор: BorisVorontsov 27.1.2008, 15:42
Не понял, в чем проблема? Чем цикл сообщений не устраивает?

Автор: Serbis 27.1.2008, 17:25
Да меня то все устраивает, а вот MVS 2008 это потреблять отказывается!

Автор: BorisVorontsov 27.1.2008, 21:59
Что "это"? Код из первого поста? У тебя там даже szWindowClass не определен.

Автор: Andrey44 28.1.2008, 10:20
Serbis, Тут есть рядом форум по WinAPI.

А у тебя код - если я еще различаю буквы и есть для апишного форума smile 
И для начала пользуйся визардом, и разбирайся в сгенерированном коде - так легче.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)