所謂路由即是點選菜單某一項時,程式響應的順序。
1 一般情況下。最先捕捉到菜單點選消息的是Frame類,(在Frame類中可以直接使用GetMenu() ,
而在View類中,要使用GetParent()->GetMenu()來擷取系統菜單的指針。)但Frame類并不作出相應,
它會交給View類來處理,如果View類中有相應處理函數,則處理,路由結束。
否則View類會把消息交給Doc文檔類來處理,如果文檔類有相應的處理,則結束。
否則文檔類會重新遞交給View類,View類再交給Frame類,這時如果Frame類中有相應處理,則結束
否則會接着給到程式類App類中,如果App類中還沒有處理,則交給作業系統。
2 也可以截斷這種預設的路由,直接由Frame類來截獲消息并執行。由于Frame類中的OnCommand是個
虛函數,如果我們重寫它,并不再調用基類的OnCommand,那麼路由隻是在Frame中這裡就結束了。
BOOL CMainFrame::OnCommand(WPARAM wParam , LPARAM lParam)
... {
//我們可以設定一個int來接受wParam,以此判斷相應的是哪一個ID項
int nID = LOWORD(wParam);
//如果nID是我們菜單的ID值,比如 nID == ID_FILE_NEW 那麼做出相應的處理
if(nID == ID_FILE_NEW)
...{
// Do something
}
//當然也可以用switch來進行多項選擇
}