1. 程式人生 > >MFC介面程式設計基礎(13):列表框和組合框

MFC介面程式設計基礎(13):列表框和組合框

上一篇:MFC介面程式設計基礎(12):組框、單選按鈕和複選框 下一篇:MFC介面程式設計基礎(14):滾動條

列表框和組合框

列表框是CListBox類的物件,組合框是CComboBox的物件。

列表框

  • 屬性設定
    列表框的重要屬性有:
  • Selection
    該屬性決定使用者的選擇方式,預設值為 Single 。屬性值有:
    ①:Single ── 單項選擇
    ②:Multiple ── 多項選擇,但是忽略 Ctrl 和 Alt 鍵。
    ③:Extended ── 允許使用 Ctrl 和 Alt 進行多項選擇
    ④:None ── 禁止選擇
    在這裡插入圖片描述
  • Sort
    當該屬性被設定為True後,列表框中的選項按字母順序排列。
    在這裡插入圖片描述
  • 常用成員函式
  • 新增專案
    格式: int AddString( LPCTSTR lpszItem );
    例如:語句 m_l. AddString(" 陳蓉 ") ; 把“陳蓉”新增到了列表框 m_l 中。
  • 刪除專案
    格式: int DeleteString( UINT nIndex );
    說明: nIndex 表示被刪除專案在列表框中的位置,對於第一個選項nIndex應為 0 。
    例如:語句 m_l. DeleteString (4) ;刪除列表框中的第 5 個專案。
  • 獲取當前被選定的專案的序號
    格式: int GetCurSel( ) const;
    例如:語句int I=m_l.GetCurSel(); 將使I 獲得 m_l 列表框中當前選定的專案的序號。
  • 獲取列表框中指定的專案
    格式 1 : int GetText( int nIndex, LPTSTR lpszBuffer ) const;
    格式 2 : void GetText( int nIndex, CString& rString ) const;
    說明 :將列表框中第 nIndex 個選項的文字送到 lpszBuffer 或 rString 中。
    例如:假定有說明語句 char s1[20]; CString s2;則語句 m_l.GetText(4, s1); 和 m_l. GetText(4, s2); 把第 5 項內容分別送到 s1 和 s2 中。

【例】

編寫一個能對列表框進行專案新增、修改和刪除操作的應用程式,如圖所示。“新增”按鈕的功能是將文字框中的內容新增到列表框,“刪除”按鈕的功能是刪除列表框中選定的選項。如果要修改列表框,則首先選定選項,然後單擊“修改”按鈕,所選的選項顯示在文字框中,當在文字框中修改完之後再單擊“修改確定”按鈕更新列表框。
在這裡插入圖片描述

  • 介面設計
    首先建立一個對話方塊應用程式框架,然後放置按鈕。列表框和命令按鈕按表連線變數,其餘控制元件不需要連線變數。
    在這裡插入圖片描述
  • 初始化
    列表框的選項在對話方塊的初始化函式中用 AddString 函式新增。
BOOL CTESTDlg::OnInitDialog() 
{ 
	┆ 
	// TODO: Add extra initialization here 
	m_l.AddString(" 大學計算機基礎 "); 
	m_l.AddString("C/C++ 程式設計 "); 
	m_l.AddString("VB 程式設計 "); 
	m_l.AddString(" 軟體技術基礎 "); 
	┆ 
} 
  • 訊息處理函式
…………………………………………………………
void CTESTDlg::OnButton1() // 選擇“新增”後執行的函式 
{ 
 // TODO: Add your control notification handler code here 
 UpdateData(TRUE); 
 m_l.AddString(m_e); 
 m_e=""; 
 UpdateData(FALSE); 
} 
…………………………………………………………
void CTESTDlg::OnButton2() // 選擇“刪除”後執行的函式 
{ 
 // TODO: Add your control notification handler code here 
 int n=m_l.GetCurSel(); 
 m_l.DeleteString(n); 
} 
…………………………………………………………
void CTESTDlg::OnButton3() // 選擇“修改”後執行的函式 
{ 
 // 將選定的專案送編輯框供修改 
 // TODO: Add your control notification handler code here 
 CString s; 
 int n=m_l.GetCurSel(); 
 m_l.GetText(n,s); 
 m_e=s; 
 UpdateData(FALSE); 
} 
…………………………………………………………
void CTESTDlg::OnButton4() // 選擇“確定修改”後執行的函式 
{ 
 // 將修改後的專案送回列表框中,替換原專案,實現修改。 
 // TODO: Add your control notification handler code here 
 UpdateData(TRUE); 
 int n=m_l.GetCurSel(); 
 m_l.DeleteString(n); 
 m_l.InsertString(n,m_e); 
 m_e=""; 
 UpdateData(FALSE); 
} 
…………………………………………………………

組合框

  • 屬性設定

  • 種類( Type )
    該屬性用於指定組合框的型別,共有三個選擇: Simple 、 Dropdown 和 Droplist ,預設值為 Dropdown 。
    在這裡插入圖片描述

  • 鍵入列表框項( Enter listbox items )
    在列表框的屬性視窗有一個“ Data ”屬性,這是在設計階段輸入選項的地方,如圖所示。輸入每一項都需要用分號分隔
    在這裡插入圖片描述

  • 常用成員函式
    編輯框和列表框的成員函式幾乎都可以用於組合框,但是列表框的成員函式 GetText() 在組合框中的是 GetLBText()

  • int GetLBText( int nIndex, LPTSTR lpszText ) const;

  • void GetLBText( int nIndex, CString& rString ) const;
    說明 :使用 GetLBText 函式可以將組合框中的第 nIndex 個專案的文字送入 lpszText 或 rString 中。

  • 組合框發出的訊息

  • CBN_SELECTCHANGE :組合框的列表框中的選項改變時傳送

  • CBN_EDITCHANGE :組合框的編輯框中文字改變時發出

【例】

設計一個如圖所示的對話方塊。如果單擊“確定”按鈕,則用 MessageBox 顯示如圖所示的資訊框。
在這裡插入圖片描述

  • 首先建立一個對話方塊程式框架,然後放置各控制元件,進行屬性設定,組合框的選項在設計階段直接輸入,按表連線變數,其餘控制元件不需要連線變數。

在這裡插入圖片描述

  • 訊息處理函式
void CTESTDlg::OnButton1() 
{ 
 // TODO: Add your control notification handler code here 
 UpdateData(TRUE); 
 CString s; 
 s=" 品牌 :"; 
 s=s+m_c; 
 s=s+"\n"; 
 s=s+" 數量 :"; 
 s=s+m_e; 
 MessageBox(s); 
}
上一篇:MFC介面程式設計基礎(12):組框、單選按鈕和複選框 下一篇:MFC介面程式設計基礎(14):滾動條