----在VC5.0中开发大型应用程序时,工具条通常是程序中必不可少的功能因素,在整个窗口的停靠位置尤其关键,它直接影响到
程序界面的外观形象。本文介绍各类工具条停靠位置的控制技巧,供参阅。
----标准工具条的停靠控制
----VC5.0应用
程序向导生成的框架代码中,都具有普通工具条的控制方法。正常情况下工具条类CToolBar是控制条类CControlBar的派生类,其显示的初始停靠位置是通过调用继承的函数CControlBar::EnableDocking(DWORDdwStyle)来确定的,其参数dwStyle用来指定停靠的具体位置,与本文有关的格式如下(其余请参阅VC5.0的联机文档):
----CBRS-ALIGN-TOP停靠在框架窗口客户区域顶部;
----CBRS-ALIGN-BOTTOM停靠在框架窗口客户区域底部;
----CBRS-ALIGN-LEFT停靠在框架窗口客户区域左边;
----CBRS-ALIGN-RIGHT停靠在框架窗口客户区域右边;
----CBRS-ALIGN-ANY停靠在框架窗口客户区域任何位置。
----在利用应用程序向导AppWizard生成的应用程序中,其控制代码默认的停靠位置为CBRS-ALIGN-ANY,即允许停靠在框架窗口客户区域的任何边上。工具条在正常显示时停靠在窗口客户区域的顶部,控制指令为EnableDocking(CBRS_ALIGN_ANY)或m_wndToolBar.EnableDocking(CBRS_ALIGN_ANY),注意在实际程序控制时前者必须处于所有其他控制代码的前面,否则浮动工具条或特殊工具条等部分代码可能无法奏效。具体控制方法请参考利用应用程序向导生成的任何一个
程序实例框架代码部分中建立的函数ONCREATE()。
----应用程序的单文档和多文档的窗口框架类均由CFrameWnd::EnableDocking(DWORDdwDockStyle)来实现的,其可选的参数除上述五种之外,还增加了CBRSFLOATMULTI参数,该参数主要是为设计浮动工具条而增加的,用来确定一个框架窗口中允许存在多个浮动工具条。同样利用应用程序向导AppWizard生成的应用
程序,其默认的停靠位置也是CBRS-ALIGN-ANY,即允许工具条停靠在框架窗口的任何边上,其默认的初始位置为框架窗口的顶部,即EnableDocking(CBRS_ALIGN_ANY)或m_wndToolBar.EnableDocking(CBRS_ALIGN_ANY)。
----浮动工具条的停靠控制
----当一个框架窗口中存在多个标准或浮动工具条时,则需要利用函数voidDockControlBar(CControlBar*pBar,UINTnDockBarID=0,LPCRECTlpRect=NULL)来确定要控制停靠位置的工具条,它也是CFrameWnd类的成员函数。其中参数pBar用来指向被控制停靠位置的工具条对象指针,参数nDockBarID用来确定工具条停靠在框架窗口的哪条边上,其控制的具体取值为:
----AFX-IDW-DOCKBAR-TOP停靠在框架窗口的顶部;
----AFX-IDW-DOCKBAR-BOTTOM停靠在框架窗口的底部;
----AFX-IDW-DOCKBAR-LEFT停靠在框架窗口的左边;
----AFX-IDW-DOCKBAR-RIGHT停靠在框架窗口的右边。
----当参数nDockBarID的取值为0时,则工具条可停靠在框架窗口中的任何一个可停靠的边上,其默认的初始位置为窗口顶部。
----并列工具条的停靠控制
----很多大型应用
程序中都存在将多个工具条同时并列停靠在某窗口的某一条边上的情况。对这种停靠方法,可利用上述工具条控制函数DockControlBar的lpRect参数,通过控制工具条的停靠矩形区域的方法来实现。实现的函数如下:
----1.在实现文件MainFrm.h中增加如下成员函数定义:
----voidDockControlBarLeftOf(CToolBar*Bar,CToolBar*LeftOf);
----2.在实现文件MainFrm.cpp中增加如下成员函数:
----voidCMainFrame::DockControlBarLeftOf(CToolBar*Bar,CTooIBar*LeftOf)
----{//设置工具条并列停靠在同一条边上
----CRectrect;//矩形区域定义
----DWORDdw;
----UINTn=0;
----RecalcLayout();//重新显示
----LeftOf->GetWindowRect(&rect);
----rect.Offset(1,0);/