塞德里克变成吸血鬼:大家帮忙看看我的程序

来源:百度文库 编辑:高考问答 时间:2024/05/10 17:45:59
我的程序运行后无法创建窗口

#include <windows.h>

LRESULT CALLBACK WndProc(HWND hwnd,UINT message,WPARAM wParam,LPARAM lParam)
{
switch (message)
{
case WM_DESTROY:PostQuitMessage(0);return 0;
}
return 0;
}

int WINAPI WinMain(HINSTANCE hinstance,
HINSTANCE hPrevinstanc,
LPSTR lpCmdLine,
int iCmdShow)
{
HWND hwnd;
MSG msg;
WNDCLASS wc;

wc.cbClsExtra=0;
wc.cbWndExtra=0;
wc.hbrBackground=(HBRUSH)GetStockObject(WHITE_BRUSH);
wc.hCursor=LoadCursor(NULL,IDC_ARROW);
wc.hIcon=LoadIcon(NULL,IDI_APPLICATION);
wc.hInstance=hinstance;
wc.lpfnWndProc=WndProc;
wc.lpszClassName="WC";
wc.lpszMenuName=NULL;
wc.style=CS_HREDRAW | CS_VREDRAW;
RegisterClass(&wc);
hwnd=CreateWindow("WC","Sample",WS_OVERLAPPEDWINDOW,CW_USEDEFAULT,CW_USEDEFAULT,
CW_USEDEFAULT,CW_USEDEFAULT,NULL,NULL,hinstance,NULL);
ShowWindow(hwnd,iCmdShow);
UpdateWindow(hwnd);

while (GetMessage(&msg,NULL,0,0))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
return msg.wParam;
}

发现一个问题:WndProc 未调用 DefWindowProc。

改正:在WndProc 的switch 中加入:
default:
return DefWindowProc(hwnd, message, wParam, lParam);