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毫秒