對話方塊增加選單和工具欄

2021-05-25 16:07:22 字數 1649 閱讀 3754

一、對話方塊中增加選單

1、  對話方塊中增加選單,只需要在對話方塊oninitdialog()函式中增加響應**即可:

cmenu menudlg;

menudlg.loadmenu(idr_menu_dlg);

setmenu(&menudlg);

也可以通過對話方塊資源,直接選擇選單id,無需增加任何**。

2、  對話方塊中的選單預設是無法響應on_update_command_ui訊息的,對於利用ccmdui類的setcheck()等函式設定的狀態無法響應,為了與框架中選單一致,需要在對話方塊中響應on_wm_initmenupopup訊息。

a) 在對話方塊類的.cpp檔案,新增乙個on_wm_initmenupopup入口到訊息對映中。

begin_message_map(ctestdlg, cdialog)

on_wm_initmenupopup()

end_message_map()

b) 在對話方塊類的.h檔案新增訊息函式宣告。

afx_msg void oninitmenupopup(cmenu *ppopupmenu, uint nindex,bool bsysmenu);

c) 在對話方塊類的.cpp檔案新增如下函式**(大部分**取自winfrm.cpp檔案的函式

cframewnd::oninitmenupopup):

二、對話方塊中增加工具欄

1、在資源中新增工具欄資源;

2、在對話方塊類中定義乙個工具欄變數;

3、在對話方塊的oninitdialog函式中create工具欄。程式如下:

在對話方塊類中定義工具欄成員變數:

c*******   m_*******;

在oninitdialog函式中create:

if(!m_*******.createex(this,tbstyle_flat, ws_child|ws_visible|cbrs_top

|cbrs_gripper|cbrs_tooltips|cbrs_size_dynamic)

||!m_*******.load*******(idr_*******_graphics))

repositionbars(afx_idw_controlbar_first, afx_idw_controlbar_last, 0);

但要讓對話方塊中的工具欄響應update_command_ui訊息,做到按下保持的狀態僅僅過載update_command_ui訊息並使用setcheck是不行的,因為此時的工具欄上的按鈕屬性為普通的按鈕,可以通過下面的方法測試:

if(m_*******.getbuttonstyle(0) == tbbs_button)

必須新增以下的設定:

m_*******.setbuttonstyle(0,tbbs_checkbox);

m_*******.setbuttonstyle(1,tbbs_checkbox);

對於需要響應的按鈕都增加以上**。

(對於利用xtreme toolkit 介面庫,工具欄使用cxtp*******類建立,呼叫setbuttonstyle()函式進行設定可以省略)

在對話方塊中增加選單欄,工具欄,狀態列

1.加選單 在對話方塊的property對話方塊中style中選中system menu 再在property對話方塊中generic中加入選單 2.加工具欄 1。要增加乙個資源idr 1 2.記得加乙個成員變數 protected c m wnd 3.bool cmain oninitdialog...

給對話方塊新增選單 工具欄 狀態列

先建立乙個基於dialog 的程式,名字叫 dlgmenu 一 如何往基於dialog的程式新增選單 1.1 先新增選單 idr menu1 資源,並加上需要的選單項。1.2 編輯對話方塊資源idd dlgmenu dialog的屬性,在屬性對話方塊中選擇idr menu1即可。1.3 假如您不希望...

給對話方塊新增選單 工具欄 狀態列簡易方法

給對話方塊新增選單 工具欄 狀態列簡易方法 收藏 先建立乙個基於dialog 的程式,我給他起了個名字叫 dlgmenu 一 如何往基於dialog的程式新增選單 1.1 先新增選單 idr menu1 資源,並加上需要的選單項。1.2 編輯對話方塊資源idd dlgmenu dialog的屬性,在...