您的位置:首页 > 其它

VC里的project panel窗口如何实现(转载)

2011-05-05 10:38 302 查看
VC里的project panel窗口如何实现

#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();
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: