PostMessage 和DispatchMessage问题

来源:百度知道 编辑:UC知道 时间:2024/05/24 11:08:49
#include <windows.h>
LRESULT CALLBACK WndProc(HWND hwnd,UINT message,WPARAM wParam,LPARAM lParam);
int WINAPI WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,LPSTR lpCmdLine,int nCmdShow)
{
static TCHAR szAppName[]=TEXT("Hello Win");
static TCHAR szClassName[]=TEXT("HelloWinClass");
HWND hwnd;
MSG msg;
WNDCLASS wndclass;
wndclass.style =CS_HREDRAW|CS_VREDRAW;
wndclass.lpfnWndProc =WndProc;
wndclass.cbClsExtra =0;
wndclass.cbWndExtra =0;
wndclass.hInstance=hInstance;
wndclass.hIcon=LoadIcon(NULL,IDI_APPLICATION);
wndclass.hCursor =LoadCursor(NULL,IDC_ARROW);
wndclass.hbrBackground =(HBRUSH)GetStockObject(WHITE_BRUSH);
wndclass.lpszMenuName=NULL;
wndclass.lpszClassName=szClassName;
if(!RegisterClass(&wndclass))
{
MessageBox(NULL,TEXT("This Program requires Windows NT"),szAppName,MB_ICONERROR);
return 0;

}

那个……我想我要解释一下重要的事……
MessageBox调用前它会先执行完当前线程的消息队列上所有消息的,因为要防止这些消息传递给MessageBox这个窗口

所以就看到你那个结果了,你把MessageBox注释掉,全部换成OutputDebugString,然后以DEBUG模式运行一次,你就会看到结果是
WM_LBUTTONDOWN,然后才到WM_DESTROY

这种解释可以解释前一个你问的问题