MFC介面程式設計基礎(13):列表框和組合框
阿新 • • 發佈:2019-01-12
上一篇: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):滾動條 |
---|