靜態控件在對話框編輯器拖放建立,無需呼叫 Create()。動態控件在執行期由程式碼 new 物件並呼叫 Create()。
IDC_MYBUTTON,Caption 填顯示文字(不可為空)。CButton* m_pBtn;(不可直接宣告 CButton m_btn,那僅適用於 DDX 控制變數)。m_pBtn = new CButton();
CRect rect(10,10,100,40);
m_pBtn->Create(_T("動態按鈕"), WS_CHILD|WS_VISIBLE|BS_PUSHBUTTON, rect, this, IDC_MYBUTTON);
ON_BN_CLICKED(IDC_MYBUTTON, OnMyButton)void OnMyButton() { ... }。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)