📄 comboboxdlg.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_strComboSample = _T("");
m_bComboVScroll = FALSE;
m_bComboAutoHScroll = FALSE;
//}}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_COMBO_SAMPLE, m_ComboSample);
DDX_Radio(pDX, IDC_COMBO_SIMPLE, m_nComboType);
DDX_CBString(pDX, IDC_COMBO_SAMPLE, m_strComboSample);
DDX_Check(pDX, IDC_VSCROLLBOX, m_bComboVScroll);
DDX_Check(pDX, IDC_AUTOHSCROLLBOX, m_bComboAutoHScroll);
//}}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_CBN_EDITCHANGE(IDC_COMBO_SAMPLE, OnEditchangeComboSample)
ON_BN_CLICKED(IDC_VSCROLLBOX, OnComboVscrollbox)
ON_WM_DESTROY()
ON_BN_CLICKED(IDC_AUTOHSCROLLBOX, OnComboAutohscrollbox)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CComboBoxDlg message handlers
BOOL CComboBoxDlg::OnInitDialog()
{
CPropertyPage::OnInitDialog();
CFont *font = GetFont ();
LOGFONT lf;
font->GetLogFont (&lf);
m_Font.CreateFontIndirect (&lf);
m_ComboSample.SetFont (&m_Font);
m_ComboSample.Dir (0, "*.*");
m_ComboSample.GetDroppedControlRect (m_rcDrop);
m_ComboSample.GetWindowRect (m_rcCombo);
ScreenToClient (m_rcCombo);
m_dwComboStyle = m_ComboSample.GetStyle ();
m_ComboSample.SetCurSel (0);
return TRUE; // return TRUE unless you set the focus to a control
// EXCEPTION: OCX Property Pages should return FALSE
}
void CComboBoxDlg::OnDestroy()
{
CPropertyPage::OnDestroy();
}
/////////////////////////////////////////////////////////////////////////////
// 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);
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 ();
}
void CComboBoxDlg::OnComboAutohscrollbox()
{
UpdateData (TRUE);
if (m_bComboAutoHScroll)
{
m_dwComboStyle |= CBS_AUTOHSCROLL;
}
else
{
m_dwComboStyle &= ~CBS_AUTOHSCROLL;
}
RecreateComboBox ();
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -