有的时候我们需要在一个工具条内放多排按钮,例如windows自带的画图软件,怎么实现呢?这里有一个小小的技巧,希望你能喜欢:)
首先假定我们的工具条资源号为IDR_PAINTTOOL;
我们从CToolBar类派生出一个CPaintToolbar类,添加一个受保护的成员变量:
protected:UIN m_nColumns; file://排m_nColumns行
public:
void SetColumns(UINT nColumns);//设置行数
UINT GetColumns() {return m_nColumns;}//获得行数
下面开始添加函数:
void CPaintToolbar::SetColumns(UINT nColumns)
{
m_nColumns=nColums;
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();
}
好了,一切就这么简单。