首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> VC >> VC 教學

VC++ 動態建立控件完整指南:從 ID 定義到訊息響應

     編輯:VC 教學

動態 vs 靜態控件

靜態控件在對話框編輯器拖放建立,無需呼叫 Create()。動態控件在執行期由程式碼 new 物件並呼叫 Create()。

建立步驟詳解

  1. 定義控件 ID
    資源視圖 → String Table → 新增項目:ID 如 IDC_MYBUTTON,Caption 填顯示文字(不可為空)。
  2. 宣告指標成員
    CButton* m_pBtn;(不可直接宣告 CButton m_btn,那僅適用於 DDX 控制變數)。
  3. 在 OnInitDialog 或按需建立
    m_pBtn = new CButton();
    CRect rect(10,10,100,40);
    m_pBtn->Create(_T("動態按鈕"), WS_CHILD|WS_VISIBLE|BS_PUSHBUTTON, rect, this, IDC_MYBUTTON);
  4. 訊息映射
    在對話框類別加入:
    ON_BN_CLICKED(IDC_MYBUTTON, OnMyButton)
    並實作 void OnMyButton() { ... }。
  5. 銷毀時釋放
    if (m_pBtn) { m_pBtn->DestroyWindow(); delete m_pBtn; m_pBtn = nullptr; }

常見控件類別對照表

控件類型MFC 類別
按鈕/核取方塊/選項按鈕CButton
編輯框CEdit
靜態文字CStatic
標籤頁CTabCtrl
進度條CProgressCtrl
滑桿CSliderCtrl
樹狀/列表/組合方塊CTreeCtrl / CListCtrl / CComboBox
富文本編輯CRichEditCtrl

進階:動態建立控件陣列

CButton* m_pBtns[5];
for (int i=0; i<5; ++i) {
    m_pBtns[i] = new CButton();
    CRect r(10, 10+i*35, 100, 40+i*35);
    CString id; id.Format(_T("IDC_BTN_%d"), i);
    m_pBtns[i]->Create(_T(""), WS_CHILD|WS_VISIBLE|BS_OWNERDRAW, r, this, (UINT)IDC_BTN_BASE+i);
}
// 訊息映射用 ON_CONTROL_RANGE(BN_CLICKED, IDC_BTN_BASE, IDC_BTN_BASE+4, OnBtnClicked)
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved