首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

Win32 對話框編輯框獲取數字輸入的完整實現

     編輯:程式設計綜合問答

核心 API 介紹

在 Win32 應用程序中,從對話框的編輯框控件獲取用戶輸入的數字,主要有兩種方法:

方法一:GetDlgItem + GetWindowText + atoi

// 1. 獲取編輯框窗口句柄
HWND hEdit = GetDlgItem(hDlg, IDC_EDIT1);

// 2. 獲取文本內容
char buffer[256];
GetWindowText(hEdit, buffer, sizeof(buffer));

// 3. 字符串轉整數
int value = atoi(buffer);

方法二:GetDlgItemInt(更簡潔)

BOOL success;
int value = GetDlgItemInt(hDlg, IDC_EDIT1, &success, FALSE);
// success 為 TRUE 表示轉換成功,FALSE 表示內容非數字
// 最後參數 FALSE 表示無符號,TRUE 表示有符號

完整示例:WM_COMMAND 處理

case IDC_BUTTON_OK:
    BOOL success;
    int number = GetDlgItemInt(hDlg, IDC_EDIT_NUMBER, &success, TRUE);
    if (success) {
        char msg[100];
        wsprintf(msg, "您輸入的數字是:%d", number);
        MessageBox(hDlg, msg, "結果", MB_OK);
    } else {
        MessageBox(hDlg, "請輸入有效的整數!", "錯誤", MB_ICONERROR);
        SetFocus(GetDlgItem(hDlg, IDC_EDIT_NUMBER));
    }
    break;

常見問題與注意點

  • ES_NUMBER 樣式:創建編輯框時設置 `ES_NUMBER` 樣式,可限制只能輸入數字
  • 緩衝區大小:`GetWindowText` 需足夠大的緩衝區防止截斷
  • 錯誤處理:`GetDlgItemInt` 返回 0 可能是輸入 0 或轉換失敗,必須檢查 `success` 參數
  • Unicode 版本:項目為 Unicode 時用 `GetDlgItemIntW` / `GetWindowTextW`,字符串用 `TCHAR`/`wchar_t`

資源定義示例

// resource.rc
IDD_MYDIALOG DIALOGEX 0, 0, 200, 100
STYLE DS_SETFONT | DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
CAPTION "數字輸入"
FONT 9, "微軟雅黑"
BEGIN
    EDITTEXT        IDC_EDIT_NUMBER, 50, 20, 100, 14, ES_AUTOHSCROLL | ES_NUMBER
    PUSHBUTTON      "確定", IDC_BUTTON_OK, 70, 50, 60, 20
END

總結

推薦使用 `GetDlgItemInt` 簡潔高效;需獲取原始文本時用 `GetWindowText` 配合 `atoi`/`strtol`。記得做輸入驗證和異常處理,提升程序健壯性。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved