VC6中新增訊息對映

2021-04-20 07:21:28 字數 831 閱讀 9682

今天發現程式未顯示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...