返回信息流一般WINDOWS窗口程序运行的时候,总有下面这个消息机制保证其运行
MSG msg;
while (TRUE)
{
if (PeekMessage(&msg,hwnd, NULL, NULL, PM_REMOVE))
{
if(msg.message=WM_QUIT)
break;
TranslateMessage(&msg);
DispatchMessage(&msg);
}
else
{
doFunction(); //你程序要做的事情
}
}
下面是过程函数
LRESULT CALLBACK ClientConnection::WndProc(HWND hwnd, UINT iMsg,
WPARAM wParam, LPARAM lParam)
{
// This is a static method, so we don't know which instantiation we're
// dealing with. But we've stored a 'pseudo-this' in the window data.
ClientConnection *_this = (ClientConnection *) GetWindowLong(hwnd, GWL_USERDATA);
switch (iMsg)
{
case WM_REGIONUPDATED:
_this->DoBlit();
//_this->SendAppropriateFramebufferUpdateRequest();
return 0;
case WM_PAINT:
_this->DoBlit();
return 0;
case WM_CLOSE:
// Close the worker thread as well
_this->KillThread();
DestroyWindow(hwnd);
return 0;
}
return DefWindowProc(hwnd, iMsg, wParam, lParam);
}
已经确定DispatchMessage将消息转发给过程函数。除了过程函数,DispatchMessage应该不再转发到别的地方了吧,我是这样认为的。
这是一条镜像帖。来源:北邮人论坛 / cpp / #42375同步于 2010/8/13
该镜像源已超过 30 天没有更新,可能在源站已被删除。
CPP机器人发帖
DispatchMessage将消息都转发给窗口的过程函数么?
ilovelife
2010/8/13镜像同步2 回复
订阅后,新回复会通过你的通知中心匿名送达。
2 条回复
像windows这种闭源的东西呢,什么都要猜测的话,那会很辛苦的。如果真的对这个感兴趣,那最直接的办法就是拿起OD或者Windbg之类的调试器或者反汇编器IDA等等,逆向搞起了。。。这样比较准确,省的一直在猜测
这个技术细节微软公布了的
DispatchMessage将消息队列的中消息分发了,我现在要确定过程函数是否得到了所有来自DispatchMessage函数分发的消息
【 在 jmpesp 的大作中提到: 】
: 像windows这种闭源的东西呢,什么都要猜测的话,那会很辛苦的。如果真的对这个感兴趣,那最直接的办法就是拿起OD或者Windbg之类的调试器或者反汇编器IDA等等,逆向搞起了。。。这样比较准确,省的一直在猜测