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

VC++ 對話框程式設計精華:控件操作、資料交換與訊息處理

     編輯:VC 教學

核心知識點總覽

本文彙整了 MFC 對話框開發中最高頻的 API 用法、資料交換機制、訊息處理技巧,適合作為速查手冊。

1. 靜態/編輯控件文字操作

  • GetDlgItem(IDC_STATIC)->GetWindowText(str) 取得文字(靜態控件需勾選 Notify 屬性)。
  • SetDlgItemText(IDC_STATIC, _T("新文字")) 設定文字。
  • GetDlgItemInt(IDC_EDIT) 直接取得整數值。

2. DDX/DDV 機制

  • UpdateData(TRUE):控件 → 變數(使用者輸入寫入成員變數)。
  • UpdateData(FALSE):變數 → 控件(成員變數更新顯示)。
  • 控件變數(如 CEdit m_edit)可直接呼叫 GetWindowText/SetWindowText,無需 GetDlgItem。

3. 低層訊息操作

  • SendDlgItemMessage(IDC_EDIT, WM_GETTEXT, len, (LPARAM)buf) 直接發送訊息取得文字。
  • SendDlgItemMessage(IDC_EDIT, WM_SETTEXT, 0, (LPARAM)buf) 設定文字。
  • EM_GETSEL/EM_SETSEL 取得/設定編輯框選取範圍(0, -1 選取全部)。

4. 焦點與 Z-Order 控制

  • GetDlgItem(IDC_NEXT)->SetFocus() 移動焦點。
  • SetWindowPos/DeferWindowPos 重排 Z 序。
  • 即使刪除 OK 按鈕,IDOK 仍會觸發 OnOK(預設按鈕行為)。

5. 屬性頁/屬性表

  • CPropertyPage::OnSetActive() 頁面啟動時觸發。
  • 取得屬性表指標:((CPropertySheet*)GetParent())->SetWizardButtons(...)。

6. 列表框與組合框

  • AddString 新增項目。
  • SetCurSel(index) 設定預設選取項。

進階:子類別化與視窗程序替換

若需攔截控件訊息,可為控件建立對應類別(ClassWizard 添加控件變數時選擇「Control」類型),或在 OnInitDialog 中使用 SetWindowLong(GWL_WNDPROC, ...) 替換視窗程序。注意保存原 WNDPROC 以便呼叫 CallWindowProc。

Tab 順序導航

  • GetNextDlgTabItem(GetFocus())->SetFocus() 移至下一個 Tab Stop 控件。
  • GetNextWindow()、GetWindow(GW_HWNDNEXT) 遍歷視窗鏈。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved