效果圖:
本文將告訴你如何實現,方法其實很簡單:
1、新建乙個mfc/sdi工程,一路都取預設的設定。
2、在mainframe.cpp檔案中找到 cmainframe::oncreate()框架視窗建立函式。在末尾新增如下**行:
dword dwexstyle = tbstyle_ex_drawddarrows;
m_wnd*******.get*******ctrl().sendmessage(tb_setextendedstyle, 0, (lparam)dwexstyle);
這兩行**的作用是讓工具欄具有處理下拉箭頭的能力,接著要用setbuttonstyle()方法在選定的地方新增下拉箭頭按鈕,在例子程式裡,下拉箭頭按鈕是加在了檔案開啟選單上:
dword dwstyle ;
dwstyle = tbstyle_dropdown;
m_wnd*******.setbuttonstyle(m_wnd*******.commandtoindex(id_file_open), dwstyle);
加了上述**行之後,編譯一次程式,然後執行程式,你就可以看到下拉箭頭了。但此時還不能操作。
3、接下來要做的事情是新增下拉箭頭的訊息處理**以及程式要用的選單資源。現在假設你已經建立了選單資源,且假設這個選單的資源id是idr_menu1。如圖二所示。
在cmainframe類的訊息對映中加入下拉箭頭的tbn_dropdown訊息對映: begin_message_map(cmainframe, cmdiframewnd)
//}afx_msg_map
end_message_map()
4、在mainframe.h標頭檔案中加入訊息處理函式的宣告: //}afx_msg
5、在mainframe.cpp檔案中加入tbn_dropdown訊息處理的實現**:
void cmainframe::on*******dropdown(nmhdr* pnmhr, lresult *plr)
// load and display popup menu
cmenu menu;
menu.loadmenu(nid);
cmenu* ppopup = menu.getsubmenu(0);
assert(ppopup);
crect rc;
pwnd->sendmessage( tb_getrect, pnmtb->iitem,(lparam)&rc);//強轉
pwnd->clienttoscreen(rc);
ppopup->trackpopupmenu( tpm_leftalign |tpm_leftbutton |tpm_vertical, rc.left, rc.bottom, this, rc);
} void cmyview::ongotovckbasehomepage()
它開啟預設的瀏覽器並訪問vc知識庫主頁。
好了,現在編譯並執行程式吧。下面是例子程式執行畫面(圖三):
注意本文提供源**僅僅只是個例子程式,在現實的軟體設計和程式設計行為中,沒有誰會在「開啟檔案」功能選單裡加入什麼「開啟關於對話方塊」和「vc知識庫主頁」之類的選單命令。這有悖於windows程式的ui規則。
MFC工具欄按鈕下拉
1.首先在cmainframe oncreate 函式下新增如下 讓工具欄有下拉能力和向下的箭頭按鈕 讓工具欄具有處理下拉箭頭的能力 dword dwexstyle tbstyle ex drawddarrows m wnd get ctrl sendmessage tb setextendedst...
VC 為工具欄新增按鈕
假設工具欄有兩個按鈕,為每個按鈕新增圖示和文字 1.新建乙個單文件程式,將準備好的圖示資源 32 32 複製到res資料夾.2.在資源中開啟工具欄編輯器,刪除 del 原有的點陣圖和多餘的按鈕 將按鈕拖出工具欄即可刪除 並為每個按鈕修改id 雙擊 比如id btn1 id btn2,可在prompt...
VC中實現多行工具欄
vc中實現工具欄是件輕而易舉的事,然而要實現多行工具欄卻需要一定的程式設計,本文簡要介紹實現乙個簡單的多行工具欄 的具體方法。先建立乙個基於文件的mfc應用程式,然後在cmainframe類中新增乙個c 物件,本文中以通常的繪圖工具欄為列,將該物件命名為m wnddrawingbar。然後在資源檔案...