MFC工具栏ToolBar按钮添加下拉菜单.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多

MFC工具栏ToolBar按钮添加下拉菜单(转)

2010-07-0411:00

1.在MainFrm.cpp的intCMainFrame::OnCreate(LPCREATESTRUCTlpCreateStruct)函数末尾添加如下代码:

//为画图工具栏的按钮添加下拉菜单

m_wndToolBar.GetToolBarCtrl().SetExtendedStyle(TBSTYLE_EX_DRAWDDARROWS);

//取值TBSTYLE_EX_DRAWDDARROWS,可以为某一个按钮添加下拉按钮。

DWORDdwStyle=m_wndToolBar.GetButtonStyle(m_wndToolBar.CommandToIndex(ID_DRAW_LINE));

dwStyle|=TBSTYLE_DROPDOWN;//其中ID_DRAW_LINE是你要添加下拉菜单的按钮的ID

m_wndToolBar.SetButtonStyle(m_wndToolBar.CommandToIndex(ID_DRAW_LINE),dwStyle);

2.新建你要在点击按钮ID_DRAW_LINE出现的下拉菜单,即在工程的Resourceview选择目录树的条目点击右键,插入新的Resouse:Menu,在这里我新建的Menu它的ID是IDR_POPUP_LINE,如下图所示:

3.在CMainFrame类的消息映射中(即MainFrm.cpp)加入下拉箭头的TBN_DROPDOWN消息映射:

ON_NOTIFY(TBN_DROPDOWN,AFX_IDW_TOOLBAR,OnToolbarDropDown)

如下:

BEGIN_MESSAGE_MAP(CMainFrame,CMDIFrameWnd)

//{{AFX_MSG_MAP(CMainFrame)

ON_WM_CREATE()

ON_NOTIFY(TBN_DROPDOWN,AFX_IDW_TOOLBAR,OnToolbarDropDown)//此行即为新增的ON_NOTIFY消息映射

//}}AFX_MSG_MAP

END_MESSAGE_MAP()

4.在MainFrame.h头文件中加入消息处理函数的声明:

afx_msgvoidOnToolbarDropDown(NMTOOLBAR*pnmh,LRESULT*plRes);

如下:

//Generatedmessagemapfunctions

protected:

//{{AFX_MSG(CMainFrame)

afx_msgintOnCreate(LPCREATESTRUCTlpCreateStruct);

afx_msgvoidOnToolbarDropDown(NMTOOLBAR*pnmh,LRESULT*plRes);

//}}AFX_MSG

DECLARE_MESSAGE_MAP()

5.在MainFrame.cpp文件中加入TBN_DROPDOWN消息处理的实现代码:

voidCMainFrame::OnToolbarDropDown(NMTOOLBAR*pnmtb,LRESULT*plr)

{

??CWnd*pWnd;

??UINTnID;

??switch(pnmtb-iItem)

??{

???caseID_DRAW_LINE://ID_DRAW_LINE即是你要添加下拉菜单的ToolBar按钮的ID

????pWnd=m_wndToolBar;

????nID=IDR_POPUP_LINE;//IDR_POPUP_LINE就是上面新制作的菜单ID,当然,如果你要添加多个下拉菜单,只要多加几个case就好了

????break;

???default:

????return;

??}

??CMenumenu;

??menu.LoadMenu(nID);

??CMenu*pPopup=menu.GetSubMenu(0);

??ASSERT(pPopup);

??CRectrc;

??pWnd-SendMessage(TB_GETRECT,pnmtb-iItem,(LPARAM)rc);

??pWnd-ClientToScreen(rc);

??pPopup-TrackPopupMen

文档评论(0)

wszwtlg202 + 关注
实名认证
文档贡献者

一页纸且

1亿VIP精品文档

相关文档