(1)新建乙個基於對話方塊的mfc應用程式pulldownmenu*******test,刪除對話方塊中原有控制項。把res目錄下的bmp檔案匯入到工程中。
(2)為cpulldownmenu*******testdlg類新增成員變數:
c******* m_*******;
cimagelist m_imagelist;
在pulldownmenu*******testdlg.h開頭定義3個命令id:
#define id_search 1001
#define id_updateinfo 1002
#define id_user_mgr 1003
在bool cpulldownmenu*******testdlg::oninitdialog()中return true;末尾前新增**如下:
//建立影象列表
m_imagelist.
create(32
,32, ilc_color24|ilc_mask,1,
1);//向影象列表中新增圖影象
cbitmap bmp;
for(
int n=
0; n<
3; n++
)//定義工具欄命令id陣列
uint narray[3]
;for
(int i=
0; i<
3; i++
) narray[i]
= id_search + i;
m_*******.
createex
(this);
m_*******.
setbuttons
(narray,3)
;//設定工具欄按鈕和按鈕影象大小
m_*******.
setsizes
(csize(60
,56),
csize(24
,24))
;//設定工具欄文字
m_*******.
setbuttontext(0
,_t("資訊修改"))
; m_*******.
setbuttontext(1
,_t("人員管理"))
; m_*******.
setbuttontext(2
,_t("資訊查詢"))
;//設定工具欄按鈕顯示圖示
m_*******.
get*******ctrl()
.setimagelist
(&m_imagelist)
; m_*******.
get*******ctrl()
.setextendedstyle
(tbstyle_ex_drawddarrows)
;//顯示工具欄
repositionbars
(afx_idw_controlbar_first, afx_idw_controlbar_last,0)
;// todo: add extra initialization here
dword dwstyle = m_*******.
getbuttonstyle
(m_*******.
commandtoindex
(id_search));
dwstyle|
= tbstyle_dropdown;
m_*******.
setbuttonstyle
(m_*******.
commandtoindex
(id_search)
,dwstyle)
;
(3)此時執行工程,對話方塊上已經有工具欄了,並且第乙個工具欄按鈕具有下拉箭頭,但單擊它暫時沒有反應,需要新增工具欄下拉的訊息對映。
新增選單資源,資源名為idr_menu1,如圖所示:
在pulldownmenu*******testdlg.cpp中手工新增訊息對映:
on_notify
(tbn_dropdown, afx_idw_*******, on*******dropdown)
新增訊息響應函式on*******dropdown,是單擊下拉箭頭時的響應函式,即當單擊第乙個工具欄按鈕的箭頭時能建立乙個選單,**如下:
void cpulldownmenu*******testdlg::
on*******dropdown
(nmhdr *pnmhdr, lresult *plr)
cmenu menu;
menu.
loadmenu
(idr_menu1)
; cmenu*ppopup = menu.
getsubmenu(0
);assert
(ppopup)
; crect rc;
pwnd-
>
sendmessage
(tb_getrect, pnmh-
>iitem,
(lparam)
&rc)
; pwnd-
>
clienttoscreen
(&rc)
; ppopup-
>
trackpopupmenu
(tpm_leftalign|tpm_leftbutton|tpm_vertical,rc.left,rc.bottom,
this
,&rc)
;}
(4)新增工具欄按鈕的訊息對映:
on_command_range
(id_search, id_user_mgr, ontoolbtnclick)
新增訊息處理函式ontoolbtnclick,**如下:
void cpulldownmenu*******testdlg::
ontoolbtnclick
(uint nid)
}
(5)新增下拉列表項「查詢1」的事件響應函式,在資源檢視中視覺化新增,如圖所示:
**如下:
void cpulldownmenu*******testdlg::
on32771()
(6)執行結果如圖所示: 在對話方塊中加入工具欄
工具欄 是一種非常方便的控制項,能大大增加使用者操作的效率,但是基於對話方塊的程式,卻不能像使用編輯框 edit box 和列表框 list box 一樣,方便地增加工具欄控制項。本文將介紹一種在對話方塊中加入工具欄的方法。一 技術要點分析 所有的windows控制項 包括工具欄 編輯框等 都派生自...
在對話方塊中插入 工具欄
一 技術要點分析 所有的windows 控制項 包括工具欄 編輯框等 都派生自 cwnd 類,這就意味著,我們可以用視窗類的 create 函式把它們 建立 並顯示到另乙個視窗 例如對話方塊 上。把工具欄加入到對話方塊中正是使用了這樣的一種方法。通常,我們使用 c ctrl 類 派生自 cwnd 類...
為對話方塊建立工具欄
為對話方塊建立工具欄 大家都知道,單文件應用程式預設生成了選單欄和工具欄,而對話方塊應用程式則沒有。對於選單欄的新增比較簡單,只要插入乙個選單資源然後在主對話方塊指定這個選單就可以了。那麼工具欄該如何建立呢?工具欄的建立相對比較麻煩,在一本書上看到了建立工具欄較簡單的方法,且聽我細細給你道來。1 從...