自定义工具栏,两行两列排列 有4个工具栏按钮,如何自定义工具栏,让工具栏按钮呈两行两列排列? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 m_wndDrawToolBar.SetColumns(2);m_wndDrawToolBar.EnableDocking(CBRS_ALIGN_ANY); //最好是不要停靠了 1.不能拖成两行两列的,2.没有这个函数的SetColumns()。 上面第二行应该注释掉 if (!m_wndDrawToolBar.CreateEx(this, TBSTYLE_FLAT,WS_CHILD | WS_VISIBLE | CBRS_SIZE_FIXED | CBRS_TOP | CBRS_TOOLTIPS) || !m_wndDrawToolBar.LoadToolBar(IDR_DRAW_EDIT_MENU)) { TRACE0("Failed to create toolbar\n"); return FALSE; } m_wndDrawToolBar.SetWindowText(_T("工具栏")); m_wndDrawToolBar.EnableDocking(0); //最好是不要停靠了 m_wndDrawToolBar.SetColumns(2); //设置成两列 FloatControlBar(&m_wndDrawToolBar, pt); ShowControlBar(&m_wndDrawToolBar,SW_SHOW,FALSE); 呵呵,,是我不对, m_wndDrawToolBar 是CDrawToolBar 类的对象DrawToolBar.h#pragma onceclass 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()};DrawToolBar.cpp// DrawToolBar.cpp : 实现文件//#include "stdafx.h"#include "DrawToolBar.h"// CDrawToolBarIMPLEMENT_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();} 如何获得菜单项的内容 MFC高手帮个忙 子对话框中动态创建进度条 有没有编辑rtf的控件? 祝大家春节愉快,猪年财运滚滚 请问怎样加载MSDN? help me!!! 中印知识分子比较 如何设置win2000虚拟内存 我写了一个简单的lib,在头文件中定义了几个变量,可为什么加到程序中编译的时候提示重复定义,难道在lib的头文件中不能定义变量??? God Bless 我明天的研究生考试-政治和英语(心中永远的痛) !!! 打印控件的时候死机 用c++基于openGL开发环境中,如何播放.mov格式的文件?
if (!m_wndDrawToolBar.CreateEx(this, TBSTYLE_FLAT,WS_CHILD | WS_VISIBLE | CBRS_SIZE_FIXED |
CBRS_TOP | CBRS_TOOLTIPS) ||
!m_wndDrawToolBar.LoadToolBar(IDR_DRAW_EDIT_MENU))
{
TRACE0("Failed to create toolbar\n");
return FALSE;
}
m_wndDrawToolBar.SetWindowText(_T("工具栏"));
m_wndDrawToolBar.EnableDocking(0); //最好是不要停靠了
m_wndDrawToolBar.SetColumns(2); //设置成两列 FloatControlBar(&m_wndDrawToolBar, pt); ShowControlBar(&m_wndDrawToolBar,SW_SHOW,FALSE);
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()
};DrawToolBar.cpp// DrawToolBar.cpp : 实现文件
//#include "stdafx.h"
#include "DrawToolBar.h"
// CDrawToolBarIMPLEMENT_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();
}