C++組合框控件使用方法

 CComboBox控件又稱作組合框控件,其有三種形態可供選擇,

       1.簡單組合框(Simple)

       2.下拉組合框(Drop-down)

       3.下拉列表式組合框(Drop-down list).

CComboBox控件的常用設置屬性說明:
         type屬性:裏面一共有三個選項.就是其三種形式, 我們常用的是後兩種形態,其區別就是Dropdown的編輯區爲可編輯控件,而droplist爲靜態控件.

         Data屬性:當程序初始化的時候,下拉列表將顯示其屬性裏面的內容,內容用分號分隔.其屬性只支持後2中形式,

         Sort 屬性:對添加到下拉列表框中的數據自動進行排序,如果你不想他改變你的顯示序列,把他設置成False.
控件是一個窗口.其基類是爲CWnd.所以CComboBox也可以使用CWnd的一些函數,它自己的函數有30幾種.我寫了一個示範程序,演示了一些常用的函數,你可以參考其代碼看到其功能.

         注:m_cbox 爲CComboBox控件的關聯變量,m_end爲EDIT控件的關聯變量 

     1.GetCount() 函數:用以獲得列表框中的選項數目.     int GetCount() const;(此乃函數原型,我會列在每條的後面) 下面的例子是程序中各個按鈕裏面的代碼
int i;
     CString str;
     i=m_cbox.GetCount();
     str.Format ("%d",i);
     m_end="一共有"+str+"個數據";
UpdateData(FALSE);

     2.GetCurSel() 函數:用以得到用戶選中下拉列表框中數據的索引值.返回的值是重0開始的,如果沒有選擇任何選項將會返回-1     Int  GetCurSel() const
int i;
     CString str;
     i=m_cbox.GetCurSel ();
     str.Format ("%d",i+1);
     if (i==-1) m_end="你什麼都沒有選";
     else m_end="你選的是第"+str+"項";
UpdateData(FALSE);

     3.SetCurSel函數:選取列表框中的一個選項,索引從0開始,-1爲什麼都不選.當你需要把列表框中已經選取的內容清空時就可以使用這個函數;
if(m_i<3) m_cbox.SetCurSel (m_i++);//m_i爲int型變量 用以計數
else {
     m_cbox.SetCurSel (-1);
     m_i=0;
           }

    4.SetEditSel函數:設置編輯區中藍色選中字段的長度, BOOL SetEditSel( intnStartChar,
     int nEndChar ); nStartChar是起始的位置,當設置爲-1時爲不選擇任何字段,nEndChar是結束位置.還有一個對應的函數GetEditSel是取得其位置,在此不詳解.
m_cbox.SetEditSel (3,5);//在編輯框中打入一串數字在按此按鈕就能看到效果
                        //其作用就是選中第3到第5個字符作爲熱點

     5.Clear() Cut() Paste() Copy() 這四個函數我放在一起說,因爲他們都是針對編輯框中選定的文字進行編輯的函數,很多初學者很不明白這4個函數,使用這些函數沒有作用,其實不然,這些函數對於在編輯框中的內容不進行處理,他真正處理的是你用鼠標選中的內容,對於Clear()函數很多書中解釋都是有誤的,很多書中對他的解釋是清除當前選中的文本,我認爲這樣的解釋是有歧異的,真正的解釋是把你剛選中的文本釋放掉,也就是不選,而不是把選中的刪除,真正的刪除選中的文本的函數是Cut(),Copy()是複製選中的文本,Paste()是粘貼到光標處.其演示就不寫在程序中,有興趣的朋友可以自己試試.

     6.LimitText()函數.其作用是限制在編輯框中鍵入的文本長度,BOOL LimitText(int nMaxChars); 當nMaxChars爲0時,不是不能輸入,而是長度最大化爲65535字節

     7.GetLBText()函數.其原型爲void GetLBText( int nIndex, CString&rString ).nIndex爲列表框中數據的索引值,rString 爲字符串,其作用就是把索引號爲nIndex的數據放到rString變量中.與其對應的GetLBTextLen(intnIndex)函數就是得到索引號爲nIndex中數據的長度
              m_cbox.GetLBText (2,m_end); // GetLBText按鈕
          UpdateData(0);
                   CString str;  //GetLBTextLen按鈕
          int i=m_cbox.GetLBTextLen (2);
          str.Format ("%d",i);
          m_end=str;
          UpdateData(FALSE);
     8.AddString()  DeleteString()  InsertString()  ResetContent() 四個函數放在一起,他們都是針對下拉列表框的處理函數, AddString(LPCTSTR lpszString) 是在列表框的尾巴添加一條數據,參數爲字符串. DeleteString(UINT nIndex)爲刪除指定索引爲nIndex的數據. InsertString(int nIndex, LPCTSTR lpszString)在索引nIndex處插入IpszString的內容. ResetContent()是清除列表框中所有的內容.
     9.SetDroppedWidth(UINT nWidth) 函數.用於設定下拉列表框的最小寬度,當下拉列表框中的數據很長不能完全顯示時,我們可以使用這個函數把列表框的寬度設置的大些.同樣GetDroppedWidth()是返回列表框的寬度.
 
以下爲總結了各大論壇中對CCombBox控件使用的問題.並給出了正解.
1.關於CComboBox在對話框中沒有下拉項目的問題
答: 資源編輯器中對話框中CComboBox組件的垂直範圍拉大了下,就看見字體了,看到那個向下的黑箭頭了嗎,點他下拉,嘿嘿就這麼簡單.

2.請問怎樣能讓CCombobox記住用戶的輸入.下次使用時還有
答: 要記住用戶的輸入必須用到文件讀寫,或者把內容添加到註冊表中,我會在以後給出解決辦法.

3. CCOMBOBOX如何使它只讀,不能編輯
答: 看了本文的介紹也許你現在知道了, CCOMBOBOX有三種類型的,選擇你需要的吧!

4. 我要讓界面一顯示,就能在Combo框中顯示默認的數據
答: 你要在OnInitDialog裏面加上我上面所提到的SetCurSel()函數就行了.

5.  如何把選好的內容賦給變量
答: 先給CCOMBOBOX設置一個CString關聯變量,再添加事件處理函數CBN_ Selchange.使用UpdateData(FALSE)就行了.

6. 在CComboBox組合框中,條目的對齊方式是左對齊,能設置爲對中或者右對齊嗎?
答: 沒有直接的方法,你必須自己對齊, 比如最大長度是10
    int i;
     String.Format("%10d", i);
    CComboBox->AddString
//////////////////////////////動態子類化CComboBox以得到子控件EDIT及LISTBOX///////////////////////////////////
ComboBox是比較常用的一個控件,有三種樣式:CBS_SIMPLE(簡單),CBS_DROPDOWN(下拉),CBS_DROPDOWNLIST(下拉列表),其中下拉列表樣式是不允許輸入的,簡單樣式是永遠都顯示下拉框的。

ComboBox是由一個ListBox和一個Edit框組合而成。本文將以限制只能輸入電話號碼爲例介紹子類化過程得到Edit框(類似的可以得到ListBox)。

 

 

 


自己做的的小站,喜歡網絡小說、喜歡讀書的朋友歡迎來轉一轉
小說夜讀

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章