本文所讨论的工具栏类是同标准的 MFC CToolBar 一同工作的。
注意:你必须有新的 COMCTL32.DLL (版本4.7或更高)。它是随 Internet Explorer 3 一同发行,并且将做为 Windows 98 的标准组件。如果你使用的是 VC++ 5,则你已经有该动态库了。
所谓类似 Word 97 的增强工具栏具有平面外观,它的左边带有“gripper”并且各组间带有分隔线。当鼠标移动到上面时,按钮就会突出来。
MFC 使用样式位来控制其平面外观。所以你不能在建立工具栏时来设置这种样式,你必须建立之后使用SetFlatLookStyle()函数来修改其样式。
平面外观工具栏是透明绘制的。不幸的是,MFC 没有介绍该如何编写这种透明的工具栏,所以需要你重绘背景。这要通过变尺寸和移动信息来实现,例如当你拖动可移动的工具栏。你也可以通过其按钮样式改变时来实现。例如,当按钮从按状态变成释放状态时,背景需要重新绘制。
工具栏控制本身并不在各组按钮间绘制分隔线,只是在其间增加一个空格。该类将截取 WM_PAINT 消息,并在正确的位置添加分隔线。
工具栏控制也不支持在起左边或顶部的gripper。该类将调整其用户区并绘制相应的gripper。
使用本类,只要简单的把你的 CToolBar 变成 CFlatToolBar,并在建立工具栏后调用 SetFlatLookStyle() 函数 (既当工具栏位图装入之后 )。
// FlatToolBar.h
// (c) 1997, Roger Onslow
class CFlatToolBar : public CToolBar
{
DECLARE_DYNAMIC(CFlatToolBar);
public:
void SetFlatLookStyle();
void RepaintBackground();
void DrawSeparators();
void DrawSeparators(CClientDC* pDC);
void EraseNonClient();
void DrawGripper(CWindowDC *pDC, CRect& rectWindow);
protected:
// ClassWizard generated virtual function overrides
//{{AFX_VIRTUAL(CFlatToolBar)
virtual void OnUpdateCmdUI(CFrameWnd* pTarget, BOOL bDisableIfNoHndler);
/








