?? dlg.cpp
字號:
#include <afxwin.h>
#include "Resource.h"
#include "dlg.h"
CDlg::CDlg(CWnd* pParent) : CDialog(IDD_DIALOG, pParent)
{
}
BOOL CDlg::OnInitDialog()
{
//調用父類初始化方法
CDialog::OnInitDialog();
//設置組合框的最大字符數為系統最大值
m_combo.LimitText(0);
//上次輸入字符長度初始化為0
iTextLen = 0;
return true;
}
void CDlg::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//將組合框控件與數據成員m_combo綁定
DDX_Control(pDX, IDC_COMBO, m_combo);
}
void CDlg::OnClear()
{
//清除組合框中的所有數據
m_combo.ResetContent();
}
//組合框輸入發生變化
void CDlg::OnCbnEditChange()
{
CString StrComboData, StrListData;
int index;
//取出組合框內容給StrComboData
m_combo.GetWindowText(StrComboData);
//如果輸入值不為空或者上次輸入字符長度小于輸入值的長度
//則表示有新字符被輸入
if ((StrComboData != "") && (iTextLen < StrComboData.GetLength()))
{
//在組合框的下拉列表中有匹配的數據
if ((index = m_combo.FindString(-1, StrComboData)) != CB_ERR)
{
//得到匹配數據的字符串
m_combo.GetLBText(index, StrListData);
//顯示下拉列表框
m_combo.ShowDropDown(true);
//移動下拉列表框,第一行顯示為匹配的數據
m_combo.SetTopIndex(index);
//顯示下拉列表框后系統會自動更新組合框內容
//設置組合框內容為下拉列表框的數據
m_combo.SetWindowText(StrListData);
}
//沒有找到相匹配的數據
else
{
//隱藏下拉列表框
m_combo.ShowDropDown(false);
//隱藏下拉列表框后系統會自動更新組合框內容
//設置組合框內容為當前的輸入值
m_combo.SetWindowText(StrComboData);
}
}
//沒有新的字符被輸入
else
{
//隱藏下拉列表框
m_combo.ShowDropDown(false);
//隱藏下拉列表框后系統會自動更新組合框內容
//設置組合框內容為當前的輸入值
m_combo.SetWindowText(StrComboData);
}
//上次輸入字符長度為輸入值的長度
iTextLen = StrComboData.GetLength();
//展開下拉列表框會改變組合框內容
//將組合框內容輸入值的長度后的文本選擇上
m_combo.SetEditSel(iTextLen, -1);
}
//CDialog類中按回車鍵會自動運行OnOK事件
//該問題如何解決,請自己查,這里不做講述
void CDlg::OnOK()
{
CString StrComboData;
CWnd *pWnd = GetFocus();
if(pWnd != NULL)
{
//CComboBox控件包含有編輯框和列表框兩個子控件
//pWnd->GetParent()才是CComboBox控件
if(pWnd->GetParent() == GetDlgItem(IDC_COMBO))
{
//取出組合框內容給StrComboData
m_combo.GetWindowText(StrComboData);
if (StrComboData != "")
{
//組合框的下拉列表框中沒有組合框內容的數據
if (m_combo.FindStringExact(-1, StrComboData) == CB_ERR)
{
//添加輸入值至組合框列表中
m_combo.AddString(StrComboData);
//將組合框內容清空
m_combo.SetWindowText("");
}
}
}
}
}
BEGIN_MESSAGE_MAP(CDlg, CDialog)
//點擊清空按鈕事件
ON_BN_CLICKED(IDC_CLEAR, OnClear)
//組合框內容改變事件
ON_CBN_EDITCHANGE(IDC_COMBO, OnCbnEditChange)
END_MESSAGE_MAP()
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -