⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 comboboxdlg.cpp

📁 这些源代码
💻 CPP
字号:
// ComboBoxDlg.cpp : implementation file
//

#include "stdafx.h"
#include "Controls.h"
#include "ComboBoxDlg.h"

#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif

/////////////////////////////////////////////////////////////////////////////
// CComboBoxDlg property page

IMPLEMENT_DYNCREATE(CComboBoxDlg, CPropertyPage)

CComboBoxDlg::CComboBoxDlg() : CPropertyPage(CComboBoxDlg::IDD)
{
	//{{AFX_DATA_INIT(CComboBoxDlg)
	m_nComboType = 0;
	m_nComboExType = 1;
	m_strComboSample = _T("");
	m_bComboVScroll = FALSE;
	m_bUseImageList = TRUE;
	//}}AFX_DATA_INIT
	m_psp.dwFlags &= ~PSP_HASHELP;
}

CComboBoxDlg::~CComboBoxDlg()
{
}

void CComboBoxDlg::DoDataExchange(CDataExchange* pDX)
{
	CPropertyPage::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CComboBoxDlg)
	DDX_Control(pDX, IDC_COMBOEX_SAMPLE, m_ComboExSample);
	DDX_Control(pDX, IDC_COMBO_SAMPLE, m_ComboSample);
	DDX_Radio(pDX, IDC_COMBO_SIMPLE, m_nComboType);
	DDX_Radio(pDX, IDC_COMBOEX_SIMPLE, m_nComboExType);
	DDX_CBString(pDX, IDC_COMBO_SAMPLE, m_strComboSample);
	DDX_Check(pDX, IDC_VSCROLLBOX, m_bComboVScroll);
	DDX_Check(pDX, IDC_COMBOEX_USEIMAGELIST, m_bUseImageList);
	//}}AFX_DATA_MAP
}


BEGIN_MESSAGE_MAP(CComboBoxDlg, CPropertyPage)
	//{{AFX_MSG_MAP(CComboBoxDlg)
	ON_BN_CLICKED(IDC_COMBO_SIMPLE, OnComboSimple)
	ON_BN_CLICKED(IDC_COMBO_DROPLIST, OnComboDroplist)
	ON_BN_CLICKED(IDC_COMBO_DROPDOWN, OnComboDropdown)
	ON_BN_CLICKED(IDC_COMBOEX_SIMPLE, OnComboexSimple)
	ON_BN_CLICKED(IDC_COMBOEX_DROPLIST, OnComboexDroplist)
	ON_BN_CLICKED(IDC_COMBOEX_DROPDOWN, OnComboexDropdown)
	ON_CBN_EDITCHANGE(IDC_COMBO_SAMPLE, OnEditchangeComboSample)
	ON_BN_CLICKED(IDC_VSCROLLBOX, OnComboVscrollbox)
	ON_BN_CLICKED(IDC_COMBOEX_USEIMAGELIST, OnComboexUseimagelist)
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CComboBoxDlg message handlers

BOOL CComboBoxDlg::OnInitDialog() 
{
	CPropertyPage::OnInitDialog();

	m_ComboSample.Dir (0, "*.*");

	char szDir[_MAX_PATH];
	memset (szDir, '\0', sizeof (szDir));
	GetCurrentDirectory (_MAX_PATH, szDir);
	CString strDir;

	m_ComboExSample.SetPath (szDir);
	CFont *font = GetFont ();
	LOGFONT lf;
	font->GetLogFont (&lf);
	m_Font.CreateFontIndirect (&lf);
	m_ComboSample.SetFont (&m_Font);

	m_ComboSample.GetDroppedControlRect (m_rcDrop);
	m_ComboSample.GetWindowRect (m_rcCombo);
	ScreenToClient (m_rcCombo);

	m_ComboExSample.GetWindowRect (m_rcComboEx);
	ScreenToClient (m_rcComboEx);
	m_rcComboEx.bottom += 4 * (m_rcComboEx.bottom - m_rcComboEx.top);
	m_dwComboStyle = m_ComboSample.GetStyle ();
	m_dwComboExStyle = m_ComboExSample.GetStyle ();
	m_dwComboExStyleEx = m_ComboExSample.GetExStyle ();

	m_ComboSample.SetCurSel (0);

	return TRUE;  // return TRUE unless you set the focus to a control
	              // EXCEPTION: OCX Property Pages should return FALSE
}

/////////////////////////////////////////////////////////////////////////////
// Combo Box Functions

void CComboBoxDlg::OnComboSimple() 
{
	UpdateData (TRUE);
	m_dwComboStyle &= ~(CBS_DROPDOWN | CBS_DROPDOWNLIST);
	m_dwComboStyle |= CBS_SIMPLE;
	RecreateComboBox();
	m_ComboSample.SetFocus ();
}

void CComboBoxDlg::OnComboDroplist() 
{
	UpdateData (TRUE);
	m_dwComboStyle &= ~(CBS_DROPDOWN | CBS_SIMPLE);
	m_dwComboStyle |= CBS_DROPDOWNLIST;
	RecreateComboBox();
	m_ComboSample.SetFocus ();
	if (m_ComboSample.GetDroppedState ())
		m_ComboSample.ShowDropDown (FALSE);
}

void CComboBoxDlg::OnComboDropdown() 
{
	UpdateData (TRUE);
	m_dwComboStyle &= ~(CBS_DROPDOWNLIST | CBS_SIMPLE);
	m_dwComboStyle |= CBS_DROPDOWN;
	RecreateComboBox();
	m_ComboSample.SetFocus ();
	if (m_ComboSample.GetDroppedState ())
		m_ComboSample.ShowDropDown (FALSE);
}

void CComboBoxDlg::RecreateComboBox()
{
	int nSel = m_ComboSample.GetCurSel ();
	int nCount = m_ComboSample.GetCount ();
	COMBODATA *pData = new COMBODATA [nCount];
	for (int n = 0; n < nCount; ++n)
	{
		m_ComboSample.GetLBText(n, pData[n].strData);
		pData[n].dwData = m_ComboSample.GetItemData (n);
	}
	m_ComboSample.ResetContent();
	m_ComboSample.DestroyWindow ();
	m_ComboSample.Create (m_dwComboStyle, m_rcCombo, this, IDC_COMBO_SAMPLE);
	for (n = 0; n < nCount; ++n)
	{
		int nIndex = m_ComboSample.AddString (pData[n].strData);
		m_ComboSample.SetItemData (nIndex, pData[n].dwData);
	}
	delete [] pData;
	m_ComboSample.SetFont (&m_Font);
	m_ComboSample.SetCurSel (nSel);
}

void CComboBoxDlg::OnEditchangeComboSample() 
{
	CString strText;
	m_ComboSample.GetWindowText (strText);
	DWORD dwSel = m_ComboSample.GetEditSel();
	int nStart = LOWORD (dwSel);
	int nEnd = HIWORD (dwSel);
	if (!m_ComboSample.GetDroppedState())
		m_ComboSample.ShowDropDown (TRUE);
	int nSel = m_ComboSample.GetCurSel ();
//	int nLoc = m_ComboSample.FindString (nSel, (LPCSTR) strText);
	int nLoc = m_ComboSample.SelectString (nSel, (LPCSTR) strText);
	if (nLoc >= 0)
		m_ComboSample.SetCurSel (nLoc);
	m_ComboSample.SetEditSel (nStart, -1);
	m_ComboSample.Invalidate();
}

void CComboBoxDlg::OnComboVscrollbox() 
{
	UpdateData (TRUE);
	if (m_bComboVScroll)
		m_dwComboStyle |= WS_VSCROLL;
	else
		m_dwComboStyle &= ~WS_VSCROLL;
	RecreateComboBox ();
}

/////////////////////////////////////////////////////////////////////////////
// Extended Combo Box Functions

void CComboBoxDlg::RecreateComboExBox()
{
	POSITION pos = m_ComboExSample.GetSelPosition();
	m_ComboExSample.ResetContent();
	m_ComboExSample.DestroyWindow ();
	m_ComboExSample.Create (m_dwComboExStyle, m_rcComboEx, this, IDC_COMBOEX_SAMPLE);
	m_ComboExSample.SetExtendedStyle (m_dwComboExStyleEx, m_dwComboExStyleEx);
	m_ComboExSample.SetFont (&m_Font);
	m_ComboExSample.UpdateDisplay (pos);
	CControlsApp *app = (CControlsApp *) AfxGetApp();
	m_ComboExSample.SetImageList (app->GetSystemImageList ());
}

void CComboBoxDlg::OnComboexSimple() 
{
	UpdateData (TRUE);
	m_dwComboExStyle &= ~(CBS_DROPDOWN | CBS_DROPDOWNLIST);
	m_dwComboExStyle |= CBS_SIMPLE;
	RecreateComboExBox();
	m_ComboExSample.Invalidate ();
}

void CComboBoxDlg::OnComboexDroplist() 
{
	UpdateData (TRUE);
	m_dwComboExStyle &= ~(CBS_DROPDOWN | CBS_SIMPLE);
	m_dwComboExStyle |= CBS_DROPDOWNLIST;
	RecreateComboExBox();
}

void CComboBoxDlg::OnComboexDropdown()
{
	Invalidate ();
	UpdateData (TRUE);
	m_dwComboExStyle &= ~(CBS_DROPDOWNLIST | CBS_SIMPLE);
	m_dwComboExStyle |= CBS_DROPDOWN;
	RecreateComboExBox();
	if (m_ComboExSample.GetDroppedState ())
		m_ComboExSample.ShowDropDown (FALSE);
}

void CComboBoxDlg::OnComboexUseimagelist() 
{
	UpdateData (TRUE);
	if (m_bUseImageList)
		m_dwComboExStyleEx &= ~(CBES_EX_NOEDITIMAGE | CBES_EX_NOEDITIMAGEINDENT);
	else
		m_dwComboExStyleEx |= CBES_EX_NOEDITIMAGE | CBES_EX_NOEDITIMAGEINDENT;
	RecreateComboExBox();
}

⌨️ 快捷键说明

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