使工具栏按钮呈两列显示

这是我在工作中遇到的问题,在这里贴出来提供给有需要的人:

一.首先在自己的工程中加入类“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”


Leave a Comment