小弟我的程序为何不能退出内存

我的程序为何不能退出内存?
#include "stdafx.h"
LONG CALLBACK WndProc(HWND hwnd,UINT message,WPARAM wParam,LPARAM lParam)
{
switch(message)
{
case WM_CREATE:
MessageBox(hwnd,"窗口已创建","提示",MB_OK);
return 0;
case WM_DESTROY:
PostQuitMessage(0);
return 0;
}
return DefWindowProc(hwnd,message,wParam,lParam);
}
int APIENTRY WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,LPSTR lpCmdLine,int nCmdShow)
{
WNDCLASS w;
HWND hwnd;
MSG msg;
w.cbClsExtra=0;
w.cbWndExtra=0;
w.hbrBackground=(HBRUSH)GetStockObject(WHITE_BRUSH);
w.hCursor=LoadCursor(hInstance,IDC_ARROW);
w.hIcon=LoadIcon(hInstance,IDI_APPLICATION);
w.hInstance=hInstance;
w.lpfnWndProc=WndProc;
w.lpszClassName="wnd";
w.lpszMenuName=NULL;
w.style=0;
RegisterClass(&w);
hwnd=CreateWindow("wnd","窗口",WS_OVERLAPPEDWINDOW,CW_USEDEFAULT,CW_USEDEFAULT,CW_USEDEFAULT,CW_USEDEFAULT,
HWND_DESKTOP,NULL,hInstance,NULL);
ShowWindow(hwnd,nCmdShow);
while(GetMessage(&msg,hwnd,0,0))
{
DispatchMessage(&msg);
}
return 0;
}
application

------解决方案--------------------
while (GetMessage(&msg,NULL,0,0))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
你丢了一行,而且是NULL,不是hWnd
因为WM_QUIT是对应线程的,而不是窗口,所以设定了特定hWnd的GetMessage取不到它。