在對話方塊程式中操作選單項

2021-06-01 21:12:54 字數 1317 閱讀 4372

在做基於對話方塊的程式時,有時我們要在這個對話方塊中載入選單,於是可能要在對話方塊程式**中修改選單薦的狀態或操作選單項的其它操作,可是當我們用**操作選單項時:

getmenu()->getsubmenu(0)->enablemenuitem(id_isp_displaymemory,mf_bycommand | mf_enabled);

編譯時沒什麼問題,執行時,程式直接崩潰.該怎麼解決這個問題呢?

在網上搜了很多資料,大部分都是說在得在框架類的建構函式內如下修改:

cmainfrm::cmainfrm 

即改為"true"就可以了.

可是哥寫的是對話方塊程式!!! 哪來的構架類????

這個問題該怎麼解決呢?? 經過堅持不懈的查詢,終於找到了解決方法:

第一步: 為對話方塊類 新增wm_initmenupopup訊息.

方法: 在對話方塊類的屬性面板上方點一下那個message按扭, 在訊息列表中找到wm_initmenupopup,並新增此訊息處理函式.

第二步: 在wm_initmenupopup訊息處理函式內新增如下**:

void clpc1114updaterdlg::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;

}}

ok,接下來就可以用

getmenu()->getsubmenu(0)->enablemenuitem(id_isp_displaymemory,mf_bycommand | mf_enabled);
這個函式來設定選單項的狀態了.

參考:

MFC對話方塊 選單項 禁用與啟用

參考文章 如果新增選單,這裡就不說了,說下如何禁用 啟用選單,網上說的都是單文件程式的多,在對話方塊程式無效哈。1.vs2010選單欄 專案 類嚮導 開啟類嚮導對話方塊 類名 選擇我們選單所在的對話方塊類,如c dlg 訊息 輸入wm initmenupopup,為其新增處理函式 如我的wm ini...

VC6 在對話方塊中開啟新對話方塊

在應用軟體中,常需要在當前視窗或對話方塊中再開啟乙個對話方塊,如button按鈕開啟 圖示按鈕開啟 選單選項開啟等,這樣就需要建立對話方塊。對話方塊分模態對話方塊和非模態對話方塊。具體的區別可以到網路上查詢。建立這兩種對話方塊的方法為 1 建立一非模態對話方塊 cmydlg pmainwnd new...

在對話方塊中新增狀態條

在對話方塊中新增狀態條 在c 論壇裡,有人曾問怎樣在對話方塊中加狀態條,我愚蠢地答覆,他只要在 dialog 類中加cstatusbar 成員m bar 然後在 oninitdialog 中呼叫m bar.create 就行了。然後有人繼續跟帖,這樣並不湊效,我就親自試了一下,果不料不行。無論如何,...