程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> VC >> 關於VC++ >> 如何用代碼動態添加控件

如何用代碼動態添加控件

編輯:關於VC++

在資源編輯器裡我們可以方便地在對話框中加入所需控件,比如文本編輯框、列表控件等。但假如我們需要在運行期間動態生成這些控件該怎麼做呢?本文就是講述用代碼動態添加控件的方法,並提供示例工程。

程序運行界面如下

為了方便演示,我們先生成一個基於對話框的MFC工程,起名為My

在CMyDlg.h中做下面幾個步驟:

public:
   //加上這個變量
   CEdit m_MyEdit;
protected:
   //加上這個函數, 用來響應編輯框改變的事件
   afx_msg void OnChangeEdit();

在CMyDlg.cpp中做下面幾個動作:

//增加這一行,為該編輯框設定ID為1820
#define ID_MYEDT 1820
在BEGIN_MESSAGE_MAP(CMyDlg, CDialog)下面加入
ON_EN_CHANGE(ID_MYEDT, OnChangeEdit)

添加這一句的作用是將編輯控件內容改變的消息映射到OnChangeEdit函數,你要在CMyDlg.cpp中實現OnChangeEdit()函數;

好了,讓我們動態生成控件吧!

m_MyEdit.CreateEx(WS_EX_CLIENTEDGE, // 3D-border外觀
    _T("EDIT"),
    NULL,
    ES_AUTOHSCROLL | ES_LEFT | ES_NOHIDESEL | WS_CHILD,
    rect, this,
    ID_MYEDT);//生成edit控件
   
m_MyEdit.ShowWindow(SW_SHOW); //顯示控件
m_MyEdit.SetFocus(); //設置焦點
//動態刪除可以用如下語句
GetDlgItem(ID_MYEDT)->DestroyWindow();//銷毀控件

在代碼中我們只演示了編輯控件的動態生成方法,其它控件動態生成的方法基本一致,都可以參考這一過程。

本文配套源碼

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved