colorbar.cpp

来自「MFC编程实例」· C++ 代码 · 共 99 行

CPP
99
字号
#include "stdafx.h"
#include "Bar.h"
#include "ColorBar.h"

#ifdef _DEBUG
#undef THIS_FILE
static char BASED_CODE THIS_FILE[] = __FILE__;
#endif

#define COMBOBOX_INDEX 2
#define COMBOBOX_WIDTH 150
#define COMBOBOX_HEIGHT 150
#define COMBOBOX_BITMAP 2
#define IDC_EDITBAR_SEARCHBOX	101

CColorBar::CColorBar()
{
}

CColorBar::~CColorBar()
{
}

BOOL CColorBar::AddComboBox()
{
	CRect rect(-COMBOBOX_WIDTH, -COMBOBOX_HEIGHT, 0, 0);

	if(!m_wndComboBox.Create(WS_CHILD | CBS_DROPDOWN |
		CBS_AUTOHSCROLL | WS_VSCROLL | CBS_HASSTRINGS, rect, this,
		IDC_EDITBAR_SEARCHBOX))
	{
		return FALSE;
	}

	return TRUE;
}

BOOL CColorBar::SetHorizontal()
{
	m_bVertical=FALSE;
	SetBarStyle(GetBarStyle() | CBRS_ALIGN_TOP);
	SetButtonInfo(COMBOBOX_INDEX, IDC_EDITBAR_SEARCHBOX, TBBS_SEPARATOR, COMBOBOX_WIDTH);
	if(m_wndComboBox.m_hWnd != NULL)
	{
		CRect rect;
		GetItemRect(COMBOBOX_INDEX, rect);
		m_wndComboBox.SetWindowPos(NULL, rect.left, rect.top, 0, 0, SWP_NOZORDER|SWP_NOACTIVATE|SWP_NOSIZE|SWP_NOCOPYBITS);
		m_wndComboBox.ShowWindow(SW_SHOW);
	}
	return TRUE;
}

BOOL CColorBar::SetVertical()
{
	m_bVertical = TRUE;

	SetButtonInfo(COMBOBOX_INDEX, ID_BUTTON_BLUE, TBBS_BUTTON, COMBOBOX_BITMAP);
	if (m_wndComboBox.m_hWnd != NULL)m_wndComboBox.ShowWindow(SW_HIDE);
	return TRUE;
}

CSize CColorBar::CalcDynamicLayout(int nLength, DWORD dwMode)
{
	if(dwMode & LM_COMMIT)
	{
		if(dwMode & LM_VERTDOCK)
		{
			if(!m_bVertical)SetVertical();
		}
		else
		{
			if(m_bVertical)SetHorizontal();
		}
		return CToolBar::CalcDynamicLayout(nLength, dwMode);
	}
	else
	{
		BOOL bOld=m_bVertical;
		BOOL bSwitch=(dwMode & LM_HORZ) ? bOld : !bOld;

		if(bSwitch)
		{
			if(bOld)SetHorizontal();
			else SetVertical();
		}
		CSize sizeResult = CToolBar::CalcDynamicLayout(nLength, dwMode);
		if(bSwitch)
		{
			if(bOld)SetHorizontal();
			else SetVertical();
		}
		return sizeResult;
	}
}
BEGIN_MESSAGE_MAP(CColorBar, CToolBar)
	//{{AFX_MSG_MAP(CColorBar)
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?