給對話方塊新增選單和狀態列

2021-09-25 08:33:26 字數 2365 閱讀 6925

from:

1,新增選單

有多種方法

(1:在resource view中選中對話方塊屬性的 menu 屬性

(2:cmenu    m_menu;

m_menu.loadmenu(idr_main_menu);

setmenu(&m_menu);

取消選單 setmenu(null);

2,新增狀態列

在標頭檔案新增 /** 狀態列*/

cstatusbar m_wndstatusbar;

。cpp檔案中新增

/** 狀態列*/

if (!m_wndstatusbar.create(this) ||

!m_wndstatusbar.setindicators(indicators,sizeof(indicators)/sizeof(uint)))

3.wm_menuselect訊息

這樣手動新增的狀態列,無法接收wm_menuselect訊息,所以我們要自己新增

on_wm_menuselect()

響應的訊息函式

/*** 選單欄選擇

*/void cfileplayerdlg::onmenuselect(uint nitemid, uint nflags, hmenu hsystemmenu)

if(nflags & mf_separator)

return ;

if(nflags & (mf_sysmenu | mf_popup))

return ;

cstring   strstatustext;  

strstatustext.loadstring( nitemid);   

m_wndstatusbar.setpanetext(0, strstatustext);//

// sendmessage(wm_setmessagestring, (wparam)0, (lparam)(lpctstr)strstatustext);

return ;}

這樣就獲得了選單的提示內容,m_wndstatusbar.setpanetext(0, strstatustext); //將選單提示顯示在狀態列第乙個窗格。當然自己可以指定其它窗格,

如果用 sendmessage(wm_setmessagestring, (wparam)0, (lparam)(lpctstr)strstatustext);

傳送 wm_setmessagestring訊息也可實現,

需要自己新增該訊息的響應函式

如下:on_message(wm_setmessagestring, onsetmessagestring) // 訊息巨集

訊息處理函式

lresult cfileplayerdlg::onsetmessagestring(wparam wparam, lparam lparam)

else if (wparam != 0)

else

strmessage.releasebuffer();  

}lpsz = strmessage;

}m_wndstatusbar.setwindowtext(lpsz);   //顯示選單提示

return 0l;}

4. 這樣手動給對話方塊新增選單,不能響應選單更新命令,沒有oninitmenupopup()函式,所以需要自己實現

手動新增            on_wm_initmenupopup() // 響應選單命令更新訊息

並新增相應的訊息處理函式。

// 給對話方塊新增處理選單命令訊息的函式 命令更新

void cfileplayerdlg::oninitmenupopup(cmenu *ppopupmenu, uint nindex,bool bsysmenu)}}

} state.m_nindexmax = ppopupmenu->getmenuitemcount();

for (state.m_nindex = 0; state.m_nindex < state.m_nindexmax;

state.m_nindex++)

state.doupdate(this, true);   // popups are never auto disabled.

}else

// adjust for menu deletions and additions.

uint ncount = ppopupmenu->getmenuitemcount();

if (ncount < state.m_nindexmax)

}state.m_nindexmax = ncount;}}

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

先建立乙個基於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的屬性,在...

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

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