Thursday0924
cout << endl << "pMyFrame received a WM_COMMAND, routing path :" << endl;
AfxWndProc(0, WM_COMMAND, 0, 0, pMyFrame);
pMyFrame处理WM_COMMAND类的路径。
1, VC在调试的时候,开启Variables窗口,其中的this页可以清楚的看见当前this的指向。
而且将this所属的数据全部都显示得很清楚。
2,调用栈
VC调试栈拷贝:
CFrameWnd::OnCmdMsg
CWnd::OnCommand
CFrameWnd::OnCommand
CWnd::WindowProc // CMyFrameWnd
AfxCallWndProc
AfxWndProc
main
mainCRTStartup() l
KERNEL32! 7c816fd7()
BOOL CFrameWnd::OnCmdMsg(UINT nID, int nCode)
{
// pump through current view FIRST
CView* pView = GetActiveView();
if (pView->OnCmdMsg(nID, nCode)) // 这里开始打印,打印结果就是昨天分析的View打印。其中包括CMyDocument的打印。
return TRUE;
// then pump through frame
if (CWnd::OnCmdMsg(nID, nCode)) // 这是CMyFrameWnd的打印
return TRUE;
// last but not least, pump through app
CWinApp* pApp = AfxGetApp();
if (pApp->OnCmdMsg(nID, nCode)) // 这是CMyApp的打印
return TRUE;
return FALSE;
}
3,回到IntelligentFTP程序
对CTreeCtrl的双击究竟是怎么处理的呢?