WTL对话框增加工具条

1 篇文章 0 订阅
1 篇文章 0 订阅

其实很简单,就一句话。因为CreateSimpleToolBarCtrl是一个静态函数


HWND hWndToolBar = CFrameWindowImplBase<CWindow,CFrameWinTraits>::CreateSimpleToolBarCtrl(m_hWnd, IDR_TOOLBAR_GENERAL, FALSE, ATL_SIMPLE_TOOLBAR_PANE_STYLE_EX);


样式如下,工具条,可以带下拉菜单


具体步骤:


1.包含文件.h

#include "toolbarhelper.h"	//http://www.codeproject.com/Articles/16737/WTL-Toolbar-Helper
//由于要用到一些扩展特性,比如增加按钮文字,增加按钮下拉菜单等等

class CMyToolBarDlg : public CDialogImpl<CMyToolBarDlg>,
                     public CToolBarHelper<CMyToolBarDlg>	//加了toobarhelper.h
{
public:

	//其他省略.....

	HWND m_hMyToolBar;		//菜单条hWnd

	//下面三个是由于toolbarhelper需要用到,所以必须添加
	CCommandBarCtrl m_CmdBar;
	
	void OnToolBarCombo(HWND hWndCombo, UINT nID, int nSel, LPCTSTR lpszText, DWORD dwItemData);	//CToolBarHelper
	void PrepareToolBarMenu(UINT nMenuID, HMENU hMenu);	//CToolBarHelper
	//两个函数可以是空函数,但必须有

	BEGIN_MSG_MAP(CMyToolBarDlg)
		MESSAGE_HANDLER(WM_INITDIALOG, OnInitDialog)
		CHAIN_MSG_MAP(CToolBarHelper<CMyToolBarDlg>)	//链接到toolbarHelper,否则没下拉菜单
	END_MSG_MAP()

};


2.cpp文件,主要是OnInitDialog函数


LRESULT CMyToolBarDlg::OnInitDialog(UINT /*uMsg*/, WPARAM /*wParam*/, LPARAM /*lParam*/, BOOL& /*bHandled*/)
{
	RECT rect;
	SIZE size;

	//直接调用atlframe.h的静态函数
	m_hMyToolBar = CFrameWindowImplBase<CWindow,CFrameWinTraits>::CreateSimpleToolBarCtrl(m_hWnd, IDR_TOOLBAR_GENERAL, TRUE, ATL_SIMPLE_TOOLBAR_PANE_STYLE_EX);

	//建立一个空的菜单
	m_CmdBar.Create(m_hWnd, rcDefault, NULL, ATL_SIMPLE_CMDBAR_PANE_STYLE);

	//绑定操作菜单条
	CToolBarCtrl tBar(m_hMyToolBar);

	//先定位,因为CreateSimpleToolBarCtrl把工具条放在一个100x100大小的地方。

	tBar.GetButtonSize(size);
	GetClientRect(&rect);
	rect.bottom=rect.top+size.cy;
	tBar.MoveWindow(&rect);

	//设置工具条的文字,和下拉菜单,具体参照toolbarhelper文章

	AddToolbarButtonText(m_hMyToolBar, ID_IMPORT_IMGS,_T("照片导入"));
	AddToolbarButtonText(m_hMyToolBar, ID_BTN_AUTOALIGN,_T("智能排版"));
	AddToolbarButtonText(m_hMyToolBar, ID_VIEW_PREV,_T("前翻"));
	AddToolbarButtonText(m_hMyToolBar, ID_VIEW_NEXT,_T("后翻"));
	AddToolbarButtonText(m_hMyToolBar, ID_VIEW_FULLSCREEN,_T("全屏"));
	AddToolbarButtonText(m_hMyToolBar, ID_EDIT_UNDO,_T("撤消"));
	AddToolbarButtonText(m_hMyToolBar, ID_EDIT_REDO,_T("重做"));

	AddToolbarButtonText(m_hMyToolBar, ID_VIEW_RESETLAYOUT,_T("重置工作区"));
	AddToolbarButtonText(m_hMyToolBar, ID_FILE_ADDPAGE,_T("加页"));
	AddToolbarButtonText(m_hMyToolBar, ID_FILE_FINISHORDER,_T("完成"));
	AddToolbarButtonText(m_hMyToolBar, ID_VIEW_CHANGE_COMBOX,_T("视角"));
	AddToolbarButtonText(m_hMyToolBar, ID_FILE_LOGIN,_T("登录"));
	AddToolbarButtonText(m_hMyToolBar, ID_BUTTON_TASK,_T("当前任务"));


	//添加下拉菜单
	AddToolBarDropDownMenu(m_hMyToolBar, ID_IMPORT_IMGS, IDR_VIEWLAYOUTMENU);


	CenterWindow(GetParent());
	return TRUE;
}


3.下拉菜单以及工具条,均可以在资源编辑器中编辑调整。

4.如果要调整工具条位置、大小等,一定要加上 CCS_NOPARENTALIGN 属性,否则无法调整宽度。CCS_NODIVIDER 则可以去掉顶端的那根横线。

4.以上测试,在VC6/WTL8编译通过


参照:

WTL_TOOLHELPER: http://www.codeproject.com/Articles/16737/WTL-Toolbar-Helper

RT_TOOLBAR 自定义资源格式介绍:http://www.microsoft.com/msj/0198/coolmenu.aspx

工具条资源读取方法: http://blog.csdn.net/wsjeep/article/details/1656246




  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值