Combox控件下拉选择不同值触发的动作响应
項目中需要根據combox控件下拉列表選擇不同的值,然后能觸發相應的動作。比如我的項目中,通過combox空間的下拉列表選擇不同的C盤,D盤,E盤,F盤,然后能在list控件中把各個盤符的文件目錄列出來。
那么觸發這個動作的消息是CBN_SELCHANGE。通過類向導添加這個消息的響應函數如下:
void CFTPCilentDlg::OnCbnSelchangeCombolocal() //下拉列表選擇改變
{// TODO: 在此添加控件通知處理程序代碼int iPos;CString strTemp;iPos=((CComboBox*)GetDlgItem(IDC_COMBOlocal))->GetCurSel();//當前選中的行。((CComboBox*)GetDlgItem(IDC_COMBOlocal))->SetCurSel(iPos);//設置第n行內容為顯示的內容。((CComboBox*)GetDlgItem(IDC_COMBOlocal))->GetWindowText(strTemp);drv=strTemp;//下面三行是具體將要執行的動作,此處可以實現你自己的函數m_listlocal.DeleteAllItems();delete m_imagelist_s;locallistdir(drv);
}
代碼中注釋 已經很清晰了,利用GetCurSel()、SetCurSel()、GetWindowText()三個函數即可獲得最終選擇的值,并置該值顯示在編輯框中,然后即可添加自己想要實現的具體函數。
此處擴展一下,關于combox控件的消息,包含以下一些:
CBN_CLOSEUP:組合框的列表框組件被關閉,簡易組合框不會發送該通知消息
CBN_DBLCLK:用戶在某列表項上雙擊鼠標,只有簡易組合框才會發送該通知消息
CBN_DROPDOWN:組合框的列表框組件下拉,簡易式組合框不會發送該通知消息
CBN_EDITUPDATE:在編輯框準備顯示改變了的正文時發送該消息,下拉列表式組合框不會發送該消息
CBN_EDITCHANGE:編輯框的內容被用戶改變了,與CBN_EDITUPDATE不同,該消息是在編輯框顯示的正文被刷新后才發出的,下拉列表式組合框不會發送該消息
CBN_ERRSPACE:組合框無法申請足夠的內存來容納列表項
CBN_SELENDCANCEL:表明用戶的選擇應該取消,當用戶在列表框中選擇了一項,然后又在組合框控件外單擊鼠標時就會導致該消息的發送
CBN_SELENDOK:用戶選擇了一項,然后按了回車鍵或單擊了下滾箭頭,該消息表明用戶確認了自己所作的選擇
CBN_KILLFOCUS:組合框失去了輸入焦點
CBN_SELCHANGE:用戶通過單擊或移動箭頭鍵改變了列表的選擇
CBN_SETFOCUS:組合框獲得了輸入焦點
然后具體實現的時候可以通過類向導添加各個消息的響應函數。OK,到此!
拙見,小記!!
總結
以上是生活随笔為你收集整理的Combox控件下拉选择不同值触发的动作响应的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 使用Combox控件的一个问题
- 下一篇: 设置Enter键为默认键