许多程序员都希望自己的程序能更象商业化程序
特别是希望自己的程序工具 条能够象WINDOWS
下的OFFICES一样具有浮动效果
针对VISUALC++编程环境
以下分别介绍了两种产生浮动工具条的方法
各有其优点和不足
可供程序员选择
第一种方法
该方法最为简单利用VC中的工具条的系统未公布的隐含参数 TBSTYLE_FLAT不需更改原由程序只要在程序中添加条语句即可实现浮动效果 不过该方法只能产生简单的浮动工具条而且没有象OFFICES中工具条右侧的拖 动条gripper而且该方法在VC下存在严重的缺陷当拖动工具条时系统不 能对工具条进行刷新因此会产生移动工具条到新位置时原处仍有工具条主 要是负责工具条的动态连接库COMCTLDLL的BUG该问题在VC中由于更新了 该动态连接库而得以解决程序员如果使用的是VC版可以用新的版本COMCTLDLL (版以上)替换该动态连接库来解决
具体方法如下
int CMainFrame::OnCreate
(LPCREATESTRUCT lpCreateStruct)
{
m_wndToolBarSetBarStyle
(m_wndToolBarGetBarStyle() |
CBRS_TOOLTIPS | CBRS_FLYBY |
CBRS_SIZE_DYNAMIC|TBSTYLE_FLAT);
//添加以下句语句产生浮动效果
LONG lStyle;
lStyle=GetWindowLong
(m_wndToolBarGWL_STYLE);
lStyle=lStyle|TBSTYLE_FLAT;
SetWindowLong(m_wndToolBar
GWL_STYLElStyle);
m_wndToolBarEnableDocking
(CBRS_ALIGN_ANY);
}
第二种方法
该方法是对MFC原来的CTOOLBAR类进行继承主要是重载成员函数 OnWindowPosChanging(LPWINDOWPOS lpWndPos);OnPaint();OnNcPaint();OnNcCalcSize(); 实现浮动工具条使用本类只要将以下的程序代码FlatToolBarh和FlatToolBarCpp 加入项目并用INCLUDE将FlatToolBarH包含到绘制主窗口的CMainFrame中然后把你 的原先定义工具条变量的CToolBar类变成 CFlatToolBar类并在建立工具条后调用 SetFlatLookStyle()函数设置浮动方式为方便以后其它使用程序可以在该类 上右击鼠标选择Add to Gallery将CFlatToolBar类存入类库以便下次使用