今天發現程式未顯示about box,分析發現,是因為程式未處理wm_syscommand命令導致;但vc的classview裡好像不能直接處理該訊息;只好手動新增. 記錄下方法和需要注意的地方。
處理mfc的classview中沒有定義的訊息需要注意三個地方,如wm_syscommand訊息,可以接收系統選單命令,但classview中沒有,這時需要自己手動新增。
一、在dialog的cpp中新增messagemap:
在begin_message_map(ctestdlg, cdialog)和end_message_map()巨集命令之間,加入:
on_wm_syscommand()
二、在dialog的標頭檔案中新增訊息處理函式定義:
在// generated message map functions
//}afx_msg
declare_message_map() 之間加入:
afx_msg void onsyscommand(uint nid, lparam lparam);
三、在dialog的cpp檔案中新增訊息處理函式體:
void ctestdlg::onsyscommand(uint nid, lparam lparam)
else
}若不新增第一步,編譯不會出錯,也可以執行,但不會獲取對wm_syscommand訊息的處理權。
新增完成後再開啟classview可以看到該訊息及處理函式已經列出來了。
另外,實際上自定義訊息的處理和這個基本上差不多。
寫作匆忙,歡迎大蝦們指導、斧正!boythl#163.com
VC6中選單的響應訊息
關鍵技術 級聯選單的建立主要是如何設定選單項的屬性,如果將選單項的屬性設定為poimip則選單項的右側就會出 現三角號。選單屬性設定如圖 a b 所示。圖 a 級聯選單 圖 b 勾選 pop up 屬性 設計過程 1 在工作區視窗中選擇資源檢視 resourceview 用滑鼠右鍵單擊乙個節點,在彈...
vc6 控制項
詳見msdn 為控制項新增乙個控制項型變數然後訪問之 edit idc edit1 m edit1 void ctest1dlg onbutton1 也可以直接使用id訪問 cstring str int i getdlgitemtextw idc edit1,str afxmessagebox s...
VC訊息對映
vc訊息對映 2010年08月14日 視類增加乙個訊息相應函式後,在原始檔中都會增加三處 1 訊息相應函式原型。在cdrawview中會有這樣的 generated message map functions protected afx msg declare message map 在declar...