『原創』用C++開發WM應用系列(6)——深化ListBox控制項

來源:互聯網
上載者:User

用C++開發WM應用系列文章索引

引言:

  在上一篇博文中,我們簡單的學習了ListBox控制項的項添加、項的全部清除。接上一篇的尾巴,我們將在這篇博文中,介紹一些ListBox的小技巧吧,比如,擷取選中項、刪除選中項。

本文

首先,我們開啟VS2008,選擇建立一個C++項目,項目名稱用MFC_Listbox吧,當然是基於MFC的智慧型裝置應用程式項目啦。來到嚮導視窗,選擇WM5平台的SDK足矣,然後設定項目基於對話方塊,其他保持預設,一路Next即可。我們先開啟資源檢視,看到我們需要把使用者介面設計成如下效果:

一個Button控制項,Caption設定為Show,一個CEdit控制項,為其添加一個變數:txtEdit。一個ListBox控制項,為其添加一個變數:lbox。大致的介面就是如此,當然,你感興趣的話,可以研究一下ListBox的屬性,很有意思。在此就暫不作深入了。

Ok,介面畫好了之後,我來介紹一下程式的邏輯吧,通過編程在程式初始化時,往ListBox中插入三個Item(使用AddString函數),當使用者選中一項之後,點擊按鈕Show,那麼被選中的Item的內容就會顯示在Edit控制項中。簡單吧~:>

好了,我們下面針對兩個主要過程來寫代碼:

1、程式初始化:

首先,我們要在程式開始時,就填充這個ListBox,自然而然的,我們會找到MFC_ListBoxDlg.cpp : 實現檔案中,那個由系統自動產生的函數:

BOOL CMFC_ListBoxDlg::OnInitDialog(),顯而易見的,函數內部已經告知我們可以添加自己定義的初始化代碼,正合我意嘛,不客氣了,直接往此函數中,添加我們的代碼如下:

 

OnInitDialog代碼

BOOL CMFC_ListBoxDlg::OnInitDialog()
{
CDialog::OnInitDialog();

// 設定此對話方塊的表徵圖。當應用程式主視窗不是對話方塊時,架構將自動
// 執行此操作
SetIcon(m_hIcon, TRUE); // 設定大表徵圖
SetIcon(m_hIcon, FALSE); // 設定小表徵圖

// TODO: 在此添加額外的初始化代碼
lbox.AddString(L"Test1");
lbox.AddString(L"Test2");
lbox.AddString(L"Test3");
return TRUE; // 除非將焦點設定到控制項,否則返回 TRUE
}

 

看到了吧,那三行lbox.AddString("xxx")就是我們的初始化代碼。這樣,在程式運行之後,ListBox中就被填充了這樣三個項。

2、Show按鈕點擊處理常式:

這裡,我們需要為Show按鈕添加事件處理常式,添加方法如:按右鍵Show按鈕後,選擇“添加事件處理常式”即可

後面按照嚮導,預設即可。之後,來到了原始碼編輯頁面,我們往這個函數中添加如下代碼:

 

Show按鈕代碼

void CMFC_ListBoxDlg::OnBnClickedButton1()
{
CString strSelect ;//設定一個字串變數,用於準備擷取ListBox中的選中項
INT nIndex = 0 ;//用於指定被選中項索引號的INT變數
nIndex=lbox.GetCurSel();//擷取ListBox中選中項的索引號
lbox.GetText(nIndex,strSelect);//將選中項索引號傳入GetText函數中,把選中項內容賦給strSelect變數

txtEdit.SetWindowText(strSelect);//顯示選中項的內容
}

大家可以看到,通過ListBox的GetCurSel()方法,擷取當前選中的項的索引,傳回值為INT,然後,用GetText()函數,擷取特定索引的內容。

最終,把選中項內容賦值給Edit控制項,通過SetWindowText()方法。

至此,我們就完成了擷取選中項的操作。當然,之前不是說了麼,如何刪除選中項呢?很簡單,注意到,ListBox中有一個DeleteString()函數,而傳入的參數恰好是項的索引值,這不就是那個nIndex嗎?簡單了。

我們修改Show按鈕的代碼如下,即可完成選中項的刪除:

 

Show按鈕代碼2

void CMFC_ListBoxDlg::OnBnClickedButton1()
{
CString strSelect ;//設定一個字串變數,用於準備擷取ListBox中的選中項
INT nIndex = 0 ;//用於指定被選中項索引號的INT變數
nIndex=lbox.GetCurSel();//擷取ListBox中選中項的索引號
lbox.DeleteString(nIndex);//刪除選中項
}

 

Ok,我們就先寫到這裡吧,今天看了一下工具箱中的其他控制項,我會抽時間,再近期寫一些其它控制項的使用的文章。感謝大家的關注~有不足之處,請盡情發表~嘿!

結尾:

在這一次的學習中,我們深入瞭解了ListBox的選中項操作,比如GetCurSel函數,用於擷取當前選中項的索引;GetText(int index)函數,用於擷取指定索引項目的內容;DeleteString(int index)函數,用於刪除指定索引項目。當然了,還有很多很多方法,就有待大家挖掘了~~~~

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.