关于一个窗口函数

来源:百度知道 编辑:UC知道 时间:2024/06/24 12:46:59
LRESULT CALLBACK WinSunProc(
HWND hwnd, // handle to window
UINT uMsg, // message identifier
WPARAM wParam, // first message parameter
LPARAM lParam // second message parameter
)
{
switch(uMsg)
{
case WM_CHAR:
char szChar[20];
sprintf(szChar,"char is %d",wParam);
MessageBox(hwnd,szChar,"消息",0);
break;
case WM_LBUTTONDOWN:
MessageBox(hwnd,"点个毛 我日","消息",0);
HDC hdc;
hdc=GetDC(hwnd);
TextOut(hdc,200,200,"全国211工程教育部直属高校",strlen("全国211工程教育部直属高校"));
ReleaseDC(hwnd,hdc);
break;
case WM_PAINT:
HDC hDC;
PAINTSTRUCT ps;
hDC=BeginPaint(hwnd,&ps);
TextOut(hDC,20,20,"合工大",strlen("合工大"));
EndPaint(hwnd,&ps);
break;
case WM_CLOSE:
if(IDYES==MessageBox(hwnd,"是否真的结束?","

这个我在书上看到过。一般消息循环的代码是这样的:
MSG msg;
while(GetMessage(&msg, NULL, NULL, NULL))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
其中while的循环条件即GetMessage的返回值,只有在收到WM_QUIT时才返回假。否则WinMain函数是不会退出的。而WM_QUIT消息是通过PostQuitMessage(0)来发送的。WM_DESTROY是关闭窗口时发送的。
注释掉那几句后,窗口关闭了,但程序未收到WM_QUIT消息未退出,你在任务管理器中仍然可以看到该exe程序在列表中