Programming 版 (精华区)
发信人: Mice (浮云往事), 信区: Programming
标 题: VC里的project panel窗口如何实现?
发信站: 紫 丁 香 (Sun Mar 8 12:23:28 1998), 转信
这是个可以指定列数的ToolBar.
#include "stdafx.h"
#include "palette.h"
class CPaletteBar : public CToolBar
{
public:
CPaletteBar();
void SetColumns(UINT nColumns);
UINT GetColumns() { return m_nColumns; };
virtual ~CPaletteBar();
#ifdef _DEBUG
virtual void AssertValid() const;
virtual void Dump(CDumpContext& dc) const;
#endif
protected:
UINT m_nColumns;
// Generated message map functions
protected:
//{{AFX_MSG(CPaletteBar)
//}}AFX_MSG
DECLARE_MESSAGE_MAP()
};
/////////////////////////////////////////////////////////////////////////////
// CPaletteBar
BEGIN_MESSAGE_MAP(CPaletteBar, CToolBar)
//{{AFX_MSG_MAP(CPaletteBar)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CPaletteBar construction/destruction
CPaletteBar::CPaletteBar()
{
m_nColumns = 2;
m_cxLeftBorder = 5;
m_cxRightBorder = 5;
m_cyTopBorder = 5;
m_cyBottomBorder = 5;
}
CPaletteBar::~CPaletteBar()
{
}
/////////////////////////////////////////////////////////////////////////////
// CPaletteBar diagnostics
#ifdef _DEBUG
void CPaletteBar::AssertValid() const
{
CToolBar::AssertValid();
}
void CPaletteBar::Dump(CDumpContext& dc) const
{
CToolBar::Dump(dc);
}
#endif //_DEBUG
/////////////////////////////////////////////////////////////////////////////
// CPaletteBar message handlers
void CPaletteBar::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();
}
--
※ 来源:.紫 丁 香 bbs.hit.edu.cn.[FROM: 202.118.226.92]
Powered by KBS BBS 2.0 (http://dev.kcn.cn)
页面执行时间:2.449毫秒