對話方塊上顯示帶下拉列表的工具欄

2021-10-05 19:04:22 字數 3458 閱讀 9553

(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 從...