Здравствуйте господа!
Решил вот поучиться на WinAPI писать, накачал умных статей и книг и облом в первой же программе. Вроде все как надо, но окно не создается. Выскакивает сообщение об ошибке (хоть это работает
). Ниже привожу исходник и прошу помощи и дельных советов.
З.Ы. Товарищей, которые поспешат сказать лишь то, какой я тупой и т.п. прошу не откликаться.
#include <windows.h>
LRESULT CALLBACK WindowProc(HWND hWnd, UINT wMsg,
WPARAM wParam, LPARAM lParam);
HINSTANCE hinst;
HWND hwndMain;
LRESULT CALLBACK WindowProc(HWND hWnd,
UINT wMsg,
WPARAM wParam,
LPARAM lParam)
{
switch( wMsg )
{
case WM_KEYDOWN:
{
switch( wParam )
{
case VK_ESCAPE:
PostQuitMessage(0);
break;
}
}
break;
case WM_CLOSE:
{
PostQuitMessage(0);
}
case WM_DESTROY:
{
PostQuitMessage(0);
}
break;
default:
{
return DefWindowProc( hWnd, wMsg, wParam, lParam );
}
break;
}
return 0;
}
int WINAPI WinMain(HINSTANCE hInstance,
HINSTANCE hPrevInstance,
LPSTR lpCmdLine,
int nShowCmd)
{
MSG msg;
long bRet;
WNDCLASSEX wc;
UNREFERENCED_PARAMETER(lpCmdLine);
if (!hPrevInstance)
{
wc.cbSize = sizeof(WNDCLASSEX);
wc.style = CS_HREDRAW | CS_VREDRAW | CS_OWNDC | CS_DBLCLKS;
wc.lpfnWndProc = WindowProc;
wc.cbClsExtra = 0;
wc.cbWndExtra = 0;
wc.hInstance = hInstance;
wc.hIcon = LoadIcon((HINSTANCE) NULL, IDI_APPLICATION);
wc.hCursor = LoadCursor((HINSTANCE) NULL, IDC_ARROW);
wc.hbrBackground = (HBRUSH)GetStockObject(WHITE_BRUSH);
wc.lpszMenuName = NULL;
wc.lpszClassName = "MainClass";
wc.hIconSm = LoadIcon (NULL, IDI_APPLICATION);
if (!RegisterClassEx(&wc)) return FALSE;
}
hinst = hInstance;
hwndMain = CreateWindow("Main Class", "Test",
WS_OVERLAPPEDWINDOW | WS_VISIBLE,
CW_USEDEFAULT, 0, CW_USEDEFAULT, 0,
0, 0, hinst, 0);
if(!hwndMain)
{
MessageBox(0, "Error создания окна!", "Мазафака...", MB_OK);
return 0;
}
ShowWindow(hwndMain, nShowCmd);
UpdateWindow(hwndMain);
while ((bRet = GetMessage(&msg, (HWND) NULL,0,0)) != 0 && bRet != -1)
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
UnregisterClass( "MainClass", wc.hInstance );
return (int) msg.wParam;
}