本例所述為使用vc編寫的乙個可以動態生成選單項的類檔案,這裡展示的是其核心**,**備有比較詳細的注釋,相對而言理解起來並不複雜。
主要功能**如下:
#include "stdafx.h"
#include "test.h"
#include "testdlg.h"
#ifdef _debug
#define new debug_new
#endif
// 用於應用程式「關於」選單項的 caboutdlg 對www.cppcns.com話框
class caboutdlg : public cdialog
; protected:
virtual void dodataexchange(cdataexchange* pdx); // ddx/ddv 支援
// 實現
protected:
declare_message_map()
};caboutdlg::caboutdlg() : cdialog(caboutdlg::idd)
void caboutdlg::dodataexchange(cdataexchange* pdx)
begin_message_map(caboutdlg, cdialog)
end_message_map()
// ctestdlg 對話方塊
ctestdlg::ctestdlg(cwnd* pparent /*=null*/)
: cdialog(ctestdlg:程式設計客棧:idd, pparent)
void ctestdlg::dodatwww.cppcns.comaexchange(cdataexchange* pdx)
begin_message_map(ctestdlg, cdialog)
on_wm_syscommand()
on_wm_paint()
on_wm_querydragicon()
//}}afx_msg_map
on_bn_clicked(idc_btnaddsystemmenu, onbnclickedbtnaddsystemmenu)
end_message_map()
// ctestdlg 訊息處理程式
bool ctestdlg::oninitdialog()
} // 設定此對話方塊的圖示。當應用程式主視窗不是對話方塊時,框架將自動
// 執行此操作
seticon(m_hicon, true); // 設定大圖示
seticon(m_hicon, false); // 設定小圖示
// todo:在此新增額外的初始化**
return true; // 除非設定了控制項的焦點,否則返回 true
}void ctestdlg::onsyscommand(uint nid, lparam lparam)
else if ((nid & 0xfff0) == idm_aboutbox)
else }
// 如果向對話方塊新增最小化按鈕,則需要下面的**
// 來繪製該圖示。對於使用文件/檢視模型的 mfc 應用程式,
// 這將由框架自動完成。
void ctestdlg::onpaint()
else }
//當使用者拖動最小化視窗時系統呼叫此函式取得游標顯示。
hcursor ctestdlg::onquerydragicon()
void ctestdlg::onbnclickedbtnaddsystemmenu()
本文標題: vc動態生成選單項的實現方法
本文位址:
BREW的選單項
實現幾個選單選項的顯示。brew 的訊息機制 2 case 為evt key 裡面則處理什麼按鍵被按,並進行響應處理。問題 brh bar 都可以生成,但 resource editor 不能生成 res.h。解決 1 檢查 沒錯。2 將brew sdk2.0 換成3.0 仍然如此。3 經過研究,發...
如何動態新增選單 選單項 子選單 右鍵選單
有關選單的操作主要用到 cmenu 類,當然也可用相應 api函式,cmenu 類只是mfc 對api 中操作選單的函式的封裝而已。不過能用類就盡量用類,類的組織方式好唄,看著也舒服。若是sdk 程式設計,那就用 api吧。cmenu menumain,menu1 首先 定義cmenu物件 一 建立...
如何動態新增選單 選單項 子選單 右鍵選單
有關選單的操作主要用到 cmenu 類,當然也可用相應 api函式,cmenu 類只是mfc 對api 中操作選單的函式的封裝而已。不過能用類就盡量用類,類的組織方式好唄,看著也舒服。若是sdk 程式設計,那就用 api吧 cmenu menumain,menu1 首先 定義cmenu物件 一 建立...