当前位置: 首页 > 图文教程 > 开发语言 > VC++ > 如何定制浮动工具条

VC++
在类VC的界面实现中加入目录树
软件换肤技术在 BCB 中的实现
利用非模窗口生成MDI介面
报表输出轻松搞定
Windows 中不规则窗体的编程实现
解说Win32的窗口子类化
使用测试优先方法开发用户界面
一个简单的登录对话框的实现
一个简单的日记本程序
从资源中加载皮肤
一个在RichEdit中添加表情图象的类
ActiveSkin 4.3 软件换肤在VC中的实现
一种另类“关于(About)”对话框的动态显示方法
对话框打印预览及打印
关于如何换肤、子类化的解决方案
制作 MSN、QQ 的消息提示窗口
如何对 BCGControlBarPro 进行换肤
定制个性化的对话框窗口类
改变窗口中的光标形状
更新MFC中的视图,跟踪.NET Framework中的事件

VC++ 中的 如何定制浮动工具条


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-10-30   浏览: 121 ::
收藏到网摘: n/a

如何定制浮动工具条


作者/NorthTibet

下载源代码


关于这个问题,其实网上可以找到很多这方面的文章和例子。尤其是在MSDN上,你可以查阅到非常详细的内容。为简单起见,本文这里只将需要定制的代码列出来。


第一步:

创建一个MDI工程,一路都选择默认选项。

第二步:

在 CMainFrame 类的头文件中添加下列方法以及变量声明:

// Operationspublic:	void DockControlBarLeftOf(CToolBar* Bar, CToolBar* LeftOf);	protected: // control bar embedded members	CToolBar m_wndToolBar1;	CToolBar	m_wndToolBar2; 
第三步:

在 CMainFrame 类实现文件中添加下列方法实现:
void CMainFrame::DockControlBarLeftOf(CToolBar* Bar, CToolBar* LeftOf){ CRect rect; DWORD dw; UINT n; // 让 MFC 调整所有浮动工具条的尺寸,以便GetWindowRect的到准确结果 RecalcLayout(TRUE); LeftOf->GetWindowRect(&rect); rect.OffsetRect(1,0); dw=LeftOf->GetBarStyle(); n = 0; n = (dw&CBRS_ALIGN_TOP) ? AFX_IDW_DOCKBAR_TOP : n; n = (dw&CBRS_ALIGN_BOTTOM && n==0) ? AFX_IDW_DOCKBAR_BOTTOM : n; n = (dw&CBRS_ALIGN_LEFT && n==0) ? AFX_IDW_DOCKBAR_LEFT : n; n = (dw&CBRS_ALIGN_RIGHT && n==0) ? AFX_IDW_DOCKBAR_RIGHT : n; // 当矩形使用默认参数时,DockControlBar 将在单独的一行里浮动工具条, // 通过计算矩形的大小来模拟工具条拖动到指定位置实现浮动。 DockControlBar(Bar,n,&rect);} 
第四步:

在 CMainFrame::OnCreate 中创建工具条:
	if (!m_wndToolBar1.CreateEx(this, TBSTYLE_FLAT | TBSTYLE_LIST, WS_CHILD | WS_VISIBLE | CBRS_TOP	| CBRS_GRIPPER | CBRS_TOOLTIPS | CBRS_FLYBY | CBRS_SIZE_DYNAMIC) ||	!m_wndToolBar1.LoadToolBar(IDR_MAINFRAME))	{	TRACE0("Failed to create toolbar\n");	return -1; // fail to create	}	if (!m_wndToolBar2.CreateEx(this, TBSTYLE_FLAT | TBSTYLE_LIST, WS_CHILD | WS_VISIBLE | CBRS_TOP	| CBRS_GRIPPER | CBRS_TOOLTIPS | CBRS_FLYBY | CBRS_SIZE_DYNAMIC) ||	!m_wndToolBar2.LoadToolBar(IDR_WINDOW))	{	TRACE0("Failed to create toolbar\n");	return -1; // fail to create	} 
用 DockControlBarLeftOf 调用代替 DockControlBar调用:
m_wndToolBar1.EnableDocking(CBRS_ALIGN_ANY);m_wndToolBar2.EnableDocking(CBRS_ALIGN_ANY);EnableDocking(CBRS_ALIGN_ANY);DockControlBar(&m_wndToolBar1);DockControlBarLeftOf(&m_wndToolBar2,&m_wndToolBar1);
第五步:

要实现 m_wndToolBar1 和 m_wndToolBar2的浮动。没有工具条资源是不行的,所以还必须在资源文件(.rc)中添加ToolBar1.bmp和ToolBar2.bmp工具条资源,其 ID 分别IDR_MAINFRAME(MFC默认)和 IDR_WINDOW。