一个关于Windows SDK 编程中 窗口创建的问题

运行都没有问题,就是我在关闭窗口的时候,我点击是后,窗口是销毁了,但是在进程里还有!我在消息处理关于WM_CLOSE和WM_DESTROY的时候都感觉没有问题,所以有点不... 运行都没有问题,就是我在关闭窗口的时候,我点击是后,窗口是销毁了,但是在进程里还有! 我在消息处理关于 WM_CLOSE 和WM_DESTROY的时候都感觉没有问题,所以有点不明白到底是怎么回事请! 请高手指点!

#include<stdio.h>
#include<windows.h>

LRESULT CALLBACK WinSunProc(
HWND hwnd,
UINT uMsg,
WPARAM wParam,
LPARAM lParam
);

int WINAPI WinMain(HINSTANCE hInstance,
HINSTANCE hPrevInstance,
LPSTR lpCmdLine,
int nCmdShow
)
{
WNDCLASS wincls;
wincls.cbClsExtra=0;
wincls.cbWndExtra=0;
wincls.hbrBackground=(HBRUSH)GetStockObject(WHITE_BRUSH) ;
wincls.hCursor=LoadCursor(hInstance,IDC_CROSS);
wincls.hIcon=LoadIcon(hInstance,IDI_APPLICATION);
wincls.hInstance=hInstance;
wincls.lpfnWndProc=WinSunProc;
wincls.lpszClassName="windows";
wincls.lpszMenuName=NULL;
wincls.style=CS_VREDRAW|CS_HREDRAW;

RegisterClass(&wincls);

HWND hwnd;
hwnd=CreateWindow("windows","´°¿Ú",WS_OVERLAPPEDWINDOW ,100,100,600,500,
NULL,NULL,hInstance,NULL);

ShowWindow(hwnd,SW_SHOWNORMAL);
UpdateWindow(hwnd);

MSG msg;

while(GetMessage(&msg,hwnd,0,0))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
};

return 0;

}

LRESULT CALLBACK WinSunProc(
HWND hwnd,
UINT uMsg,
WPARAM wParam,
LPARAM lParam
)
{
switch(uMsg)
{
case WM_CHAR:
char str[30];
sprintf(str,"you press down the %c ",wParam);
MessageBox(hwnd,str,"°´¼ü",MB_OK);
break;

case WM_PAINT:
HDC hdc;
PAINTSTRUCT ps;
hdc=BeginPaint(hwnd,&ps);
TextOut(hdc,0,0,"ÔÚÖØ»­",strlen("ÔÚÖØ»­"));
EndPaint(hwnd,&ps);
break;

case WM_LBUTTONDOWN:
HDC hDC;
hDC=GetDC(hwnd);
TextOut(hDC,0,50,"I love this game!",strlen("I love this game!"));
MessageBox(hwnd,"mouse click","mouse",MB_OK);
ReleaseDC(hwnd,hDC);
break;

case WM_CLOSE:
if(IDYES==MessageBox(hwnd,"ÄãÕæµÄÒªÍ˳ö","Ìáʾ",MB_YESNO))
{
DestroyWindow(hwnd);
}
break;

case WM_DESTROY:
PostQuitMessage(0);
break;

default:
return DefWindowProc(hwnd,uMsg,wParam,lParam);
}

}
展开
 我来答
高明月月明8612
2009-05-14 · 超过41用户采纳过TA的回答
知道小有建树答主
回答量:65
采纳率:0%
帮助的人:119万
展开全部
while(GetMessage(&msg,hwnd,0,0))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
};
这里有问题
当你DestroyWindow(hwnd);后,hwnd是无效值,在PostQuitMessage就没有意思了,GetMessage()永远不返回0,程序就不结束。
我见过有的程序直接GetMessage(&msg,NULL,0,0)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式