MFC - 列表框



一個列表框顯示專案列表,例如使用者可以檢視和選擇的檔名。列表框由CListBox 類表示。在單選列表框中,使用者只能選擇一個專案。在多選列表框中,可以選擇一系列專案。當用戶選擇一個專案時,它會被高亮顯示,並且列表框會向父視窗傳送通知訊息。

以下是列表框的一些對映條目 -

訊息 對映條目 描述
LBN_DBLCLK ON_LBN_DBLCLK( <id>, <memberFxn> ) 當雙擊列表項時,框架會呼叫此成員函式。
LBN_KILLFOCUS ON_LBN_KILLFOCUS( <id>, <memberFxn> ) 在失去輸入焦點之前,框架會立即呼叫此成員函式。
LBN_SELCHANGE ON_LBN_SELCHANGE( <id>, <memberFxn> ) 當選擇發生更改時,框架會呼叫此成員函式。
LBN_SETFOCUS ON_LBN_SETFOCUS( <id>, <memberFxn> ) 在獲得輸入焦點後,框架會呼叫此成員函式。

讓我們透過建立一個新的基於 MFC 對話方塊的應用程式來了解列表框的簡單示例。

步驟 1 - 建立專案後,您將看到 TODO 行,它是文字控制元件的標題。刪除標題並將其 ID 設定為 IDC_STATIC_TXT。

步驟 2 - 從工具箱中拖動列表框。

Listbox1

步驟 3 - 為文字控制元件新增控制元件變數。

Listbox2

步驟 4 - 為文字控制元件新增值變數。

Listbox3

步驟 5 - 為列表框控制元件新增控制元件變數。

Listbox4

步驟 6 - 為列表框控制元件新增事件處理程式。

Listbox5

步驟 7 - 從訊息型別中選擇 LBN_SELCHANGE,併為事件處理程式輸入名稱。

步驟 8 - 新增一個函式,該函式將載入列表框。

void CMFCListBoxDlg::LoadListBox() {
   CString str = _T("");
   for (int i = 0; i<10; i++) {

      str.Format(_T("Item %d"), i);
      m_listBox.AddString(str);
   }
}

步驟 9 - 從 CMFCListBoxDlg::OnInitDialog() 中呼叫該函式,如下面的程式碼所示。

BOOL CMFCListBoxDlg::OnInitDialog() {
   CDialogEx::OnInitDialog();

   // Set the icon for this dialog. The framework does this automatically
   // when the application's main window is not a dialog
   SetIcon(m_hIcon, TRUE);       // Set big icon
   SetIcon(m_hIcon, FALSE);      // Set small icon

   // TODO: Add extra initialization here
   LoadListBox();
   return TRUE; // return TRUE unless you set the focus to a control
}

步驟 10 - 這是事件處理程式的實現。這將顯示列表框中當前選定的專案。

void CMFCListBoxDlg::OnLbnSelchangeList1() {
   // TODO: Add your control notification handler code here
   m_listBox.GetText(m_listBox.GetCurSel(),m_strItemSelected);
   UpdateData(FALSE);
}

步驟 11 - 編譯並執行上述程式碼後,您將看到以下輸出。

Listbox6

步驟 12 - 選擇任何專案時,它將顯示在文字控制元件上。

mfc_windows_controls.htm
廣告