vc++深入詳解第六章

        沒有做詳細的總結,因爲我覺得很多時候只要跟着敲代碼就可以了,並沒有太多需要注意的地方,只列出幾個點。

  1.菜單命令消息路由:框架類(不響應)--視類(根據消息映射機制判斷是否相應,否交給文檔類)--文檔類(根據消息映射機制判斷是否相應,否交給文檔類)--視類(直接交還框架類)--框架類(根據消息映射機制判斷是否相應,否交給應用程序類)--應用程序類


  2.再動態添加菜單是,需要創建一個CMenu類的變量用於創建菜單,當其不定義爲CMainFrame類的成員變量時,因爲這個變量是局部變量,當它的生命週期結束後,系統會銷燬這個變量,這是不合理的。可以再創建好菜單後調用CMenu類的成員函數Detach()來將菜單句柄與菜單分離,這樣當這個局部菜單對象生命週期結束時,就不會去銷燬一個它不具有擁有權的菜單。


  3.vs2010中,在CMainFrame::OnCreate()函數中調用GetMenu()無法得到菜單指針。上網查了很久,只在在msdn論壇上看到如此的解決方法:VS2010建的SDI/MDI與之前的不一樣,是類似BCG的一些東西,所以用之前的方法GetMenu()得到CMenu是NULL或者無效。您可以在CMainFrame類中找到CMFCMenuBar m_wndMenuBar;這個成員變量,如果您將跟它相關的代碼註釋掉的話,然後再試試GetMenu()函數看看。
  

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章