这是我在工作中遇到的问题,在这里贴出来提供给有需要的人:
一.首先在自己的工程中加入类“CDrawToolBar”的源文件和头文件,如下所示:
DrawToolBar.cpp:
#include “stdafx.h”
#include “DrawToolBar.h”
// CDrawToolBar
IMPLEMENT_DYNAMIC(CDrawToolBar, CToolBar)
CDrawToolBar::CDrawToolBar()
{
m_nColumns = 2;
m_cxLeftBorder = 5;
m_cyTopBorder = 5;
m_cxRightBorder = 5;
m_cyBottomBorder = 5;
}
CDrawToolBar::~CDrawToolBar()
{
}
BEGIN_MESSAGE_MAP(CDrawToolBar, CToolBar)
END_MESSAGE_MAP()
// CDrawToolBar 消息处理程序
void CDrawToolBar::SetColumns(UINT nColumns)
{
m_nColumns = nColumns;
int nCount = GetToolBarCtrl().GetButtonCount();
for (int i = 0; i < nCount; i++)
{
UINT nStyle = GetButtonStyle(i);
BOOL bWrap = (((i + 1) % nColumns) == 0);
if (bWrap)
nStyle |= TBBS_WRAPPED;
else
nStyle &= ~TBBS_WRAPPED;
SetButtonStyle(i, nStyle);
}
Invalidate();
GetParentFrame()->RecalcLayout();
}
DrawToolBar.h
#pragma once
class CDrawToolBar : public CToolBar
{
DECLARE_DYNAMIC(CDrawToolBar)
public:
CDrawToolBar();
void SetColumns(UINT nColumns);
UINT GetColumns() { return m_nColumns; };
virtual ~CDrawToolBar();
protected:
UINT m_nColumns;
protected:
DECLARE_MESSAGE_MAP()
};
二.在CMainFrame中添加成员变量m_wndDrawToolBar,m_wndDrawToolBar 是CDrawToolBar 类的对象
CDrawToolBar m_wndDrawToolBar;
三.在CMainFrame的OnCreate函数中添加如下代码:
if (!m_wndDrawToolBar.CreateEx(this, TBSTYLE_FLAT,WS_CHILD | WS_VISIBLE | CBRS_SIZE_FIXED |
CBRS_TOP | CBRS_TOOLTIPS) ||
!m_wndDrawToolBar.LoadToolBar(IDR_MAINFRAME))
{
TRACE0(”Failed to create toolbar\n”);
return FALSE;
}
m_wndDrawToolBar.SetWindowText(_T(”工具栏”));
m_wndDrawToolBar.SetColumns(2); //设置工具栏按钮呈两列显示,可以修改列数
m_wndDrawToolBar.EnableDocking(CBRS_ALIGN_BOTTOM | CBRS_ALIGN_RIGHT);
EnableDocking(CBRS_ALIGN_ANY);
FloatControlBar(&m_wndDrawToolBar, CPoint(200,200),CBRS_ALIGN_TOP);//浮动工具栏
注意:在MainFrm.h中包含类CDrawToolBar的头文件,否则会提示错误。
#include “DrawToolBar.h”