一般的windows消息循环是这样:
while (GetMessage(&msg,NULL,0,0))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}然而 DispatchMessage(&msg);
的在user32.dll中的实现实际是
LONG DispatchMessage(const MSG* msg)
{
LONG lResult;
WNDPROC lpfnWndProc=(WNDPROC)
GetWindowLongPtr(msg.hwnd,GWLP_WNDPROC);
lResult=lpfnWndProc(msg.hwnd,msg.message,msg.wParam,msg,lParam);
return(lResult);
} //<<windows核心编程>>
我现在就是怎么也想不明白
为什么不把 DispatchMessage(&msg)改为
wndproc(msg.hwnd,msg.message,msg.wParam,msg,lParam)
而非要用DispatchMessage
有的解释说是为了让操作系统也能够调用窗口的窗口过程
我不明白这是说的哪种情况
while (GetMessage(&msg,NULL,0,0))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}然而 DispatchMessage(&msg);
的在user32.dll中的实现实际是
LONG DispatchMessage(const MSG* msg)
{
LONG lResult;
WNDPROC lpfnWndProc=(WNDPROC)
GetWindowLongPtr(msg.hwnd,GWLP_WNDPROC);
lResult=lpfnWndProc(msg.hwnd,msg.message,msg.wParam,msg,lParam);
return(lResult);
} //<<windows核心编程>>
我现在就是怎么也想不明白
为什么不把 DispatchMessage(&msg)改为
wndproc(msg.hwnd,msg.message,msg.wParam,msg,lParam)
而非要用DispatchMessage
有的解释说是为了让操作系统也能够调用窗口的窗口过程
我不明白这是说的哪种情况
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货