初学mfc,对消息传递机制不是很懂。看上上面的

初学mfc,对消息传递机制不是很懂。。。看下下面的:
C/C++ code

BEGIN_MESSAGE_MAP(CMainFrame, CFrameWnd)
    //{{AFX_MSG_MAP(CMainFrame)
    ON_WM_CREATE()
    ON_COMMAND(ID_TEST,   OnTest)
    ON_COMMAND(ID_TEST001,OnTest001)//这个和下面的那个要是调换顺序的话,执行的结构都不一样
    ON_COMMAND(IDM_SHOW,  OnShow)        
    //}}AFX_MSG_MAP
END_MESSAGE_MAP()


C/C++ code

BEGIN_MESSAGE_MAP(CMainFrame, CFrameWnd)
    //{{AFX_MSG_MAP(CMainFrame)
    ON_WM_CREATE()
    ON_COMMAND(ID_TEST,   OnTest)
    ON_COMMAND(IDM_SHOW,  OnShow)//这个和下面的那个要是调换顺序的话,执行的结构都不一样
    ON_COMMAND(ID_TEST001,OnTest001)        
    //}}AFX_MSG_MAP
END_MESSAGE_MAP()



C/C++ code

void CMainFrame::OnTest001() //如果ON_COMMAND(ID_TEST001,OnTest001)在上面,就执行这条函数
{
    MessageBox("Test001");
}
void CMainFrame::OnShow() //如果ON_COMMAND(ID_TEST001,OnTest001)在下面,就执行这条函数
{
    MessageBox("CMainFrame::OnShow()");
    // TODO: Add your command handler code here    
}



------解决方案--------------------
如果改了顺序不一样,那就怀疑
ID_TEST,ID_TEST001这两个的ID值可能是相同的.

否则,除非你点击了不同的命令,否则跟顺序真无关的.

------解决方案--------------------
ID不要重复 可以手动维护一下
------解决方案--------------------
你应该是手工修改了ID吧,按理说自动生成的ID是不会重复的。