注册 登录
编程论坛 VC++/MFC

一个程序初始正常运行的时候,针对各个消息的响应顺序是什么呢?如果响应了多个消息,哪个消息响应在前,哪个在后?

wwwjw 发布于 2011-03-22 08:26, 488 次点击
Mfc自动生成的SDI程序,只在其中加入对视图类WM_SIZE消息的响应:
void CMessageSeqenceView::OnSize(UINT nType, int cx, int cy)
{
    CView::OnSize(nType, cx, cy);
   
    // TODO: Add your message handler code here
    AfxMessageBox("尺寸改变消息的响应");
}
发现会弹出3次提示窗口,其中2次再窗口显示前,一次在窗口显示之后。
继续在其中加入对视图类WM_MOVE消息的响应:
void CMessageSeqenceView::OnMove(int x, int y)
{
    CView::OnMove(x, y);
   
    // TODO: Add your message handler code here
    AfxMessageBox("移动消息的响应");

}
这样一共出现6次窗口提示,尺寸改变与移动分别导致3次,次序为:
尺寸改变-移动-移动-尺寸改变-移动(显示窗口)-尺寸改变
另外如果只针对MainFrame响应WM_SIZE消息,则会弹出2次窗口,一次在窗口显示前,一次在显示后!
我想问下深层次的原因……………………
另外就是一个程序初始正常运行的时候,针对各个消息的响应顺序是什么呢?如果响应了多个消息,哪个消息响应在前,哪个在后?
1 回复
#2
lisypro2011-03-30 19:18
弄一个文件记录一下顺序就行了
1