简介
本文介绍如何添加一个浮动/停靠工具栏的对话框。
在MSDN中,有一个样品(dlgcbr32)这是一个固定的工具栏添加到对话框的方式来。我有扩展,例如,创建一个CDialog派生的类,它包含可以是固定的,浮动或隐藏的工具栏。浮动工具栏的作用是通过动态创建一个无模式对话框,其中包含一个固定的工具栏。使用代码
使用代码,您必须执行以下步骤:包括在您的项目ToolbarDialog.h和ToolbarDialog.cpp。来自CToolbarDialog您的对话:#包括"ToolbarDialog.hquot;CTDDlg类:公共CToolbarDialog
也确保你至少通过工具栏资源ID,您要使用的CToolbarDialog构造。这个构造函数有四个参数:前两个是对话框的ID和父(一样CDialog的),第三是工具栏资源ID和第四的是工具栏的初始状态。可能的值有:TS_HIDDEN / /工具栏不显示TS_FLOATING / /工具栏是浮动的在该对话框的左侧大小是固定的TS_LEFT / /工具栏TS_TOP / /工具栏是固定在对话框顶部在该对话框的右侧大小是固定的TS_RIGHT / /工具栏在对话框的底部是固定的TS_BOTTOM / /工具栏
下面是一个例子:CTDDlg:CTDDlg(的CWnd * pParent / *= NULL * /) :CToolbarDialog(CTDDlg:国际直拨电话,pParent,IDR_TOOLBAR1,TS_HIDDEN)在你的类中,声明和实现的功能:
虚拟ToolbarButtonCommand龙(UINT uButtonID);
这个函数接收作为参数的工具栏按钮被按下的ID。通过实施此功能,您可以添加到工具栏按钮的处理程序。
范例:CTDDlg长::ToolbarButtonCommand(UINT uButtonID){ CString的味精; msg.Format("ID为%d在toolbarquot按下按钮,uButtonID); AfxMessageBox(味精); 返回0;}如果你想设置的工具栏的状态是动态的,只需要调用PositionToolbar(DWORD dwPosition)。可以有参数的值是前面描述的。例如,要显示工具栏浮动,只需添加到您的代码下面的函数调用:PositionToolbar(TS_FLOATING);要启用/禁用的工具栏按钮,只需添加UpdateCommandUI处理程序到您的对话框和编辑的方法,你会在每一帧/视图应用程序,。
例如:ON_UPDATE_COMMAND_UI_RANGE(ID_BUTTON32771,ID_BUTTON32775,OnUpdateBtn)无效CTDDlg:OnUpdateBtn(CCmdUI * PCMD){ 如果(PCMD - GT; m_nID == ID_BUTTON32771) PCMD - GT;启用(FALSE);}如果你想拥有的工具栏按钮的工具提示,请按照下列步骤。您现在有一个对话框,支持浮动工具栏。
我已经测试了这个类仅在Windows 2000,但我认为它也将工作在Win9x和WinXP。修订历史版本1.0.0 - 2004年4月7日首次发行。版本1.0.1 - 2004年4月8日固定的臭虫:附加工具栏的右侧或左侧时,没有拖可能通过点击手柄上的(感谢ReorX通知我有关此错误)。固定的臭虫:浮动的工具栏是停靠时,父对话框不接收焦点。版本1.0.2 - 2004年4月9日增加:VC6的兼容性新增:工具提示支持(感谢兰迪更多他的文章在对话框中添加工具提示工具栏)固定的臭虫:UPDATE_COMMAND_UI不起作用(感谢= [阿斌] =通知我有关此错误)致谢克里斯蒂安Teodorescu给我的使用一个动态的浮动工具栏对话框的概念。感谢微软公司为他们的Dlgcbr32样本使用
您可以自由使用任何个人或免费的应用程序软件。如果您使用任何共享软件或商业应用软件,您必须先得到我的许可。如果您对其进行修改或扩展,请考虑张贴新的代码,在这里,供大家分享。这个软件是按"现况"提供,没有明示或暗示保证。我接受业务,该软件可能导致的任何损害或损失不承担任何责任。