設置 | 登錄 | 註冊

目前共有14篇帖子。

【案例】给Win32程序的“关于”对话框添加一个按钮

11樓 巨大八爪鱼 2015-12-1 22:35
修改OK按钮上的文字:
HWND okbtn = GetDlgItem(hDlg, IDOK); // 获取OK按钮
SendMessage(okbtn, WM_SETTEXT, NULL, (LPARAM)L"Click me");

获取一个复选框是否被选中:
HWND checkbox = GetDlgItem(hDlg, IDC_CHECK1);
int checked = SendMessage(checkbox, BM_GETCHECK, NULL, NULL);
if (checked)
{
  //选中了
}

禁用按钮:
EnableWindow(okbtn, false);
12樓 巨大八爪鱼 2015-12-1 22:41
启用XP风格控件后:
(启用方法请参阅:https://zh.arslanbar.net/post.php?t=22016)

13樓 巨大八爪鱼 2015-12-1 22:42
回复:12楼
程序:
// Message handler for about box.
INT_PTR CALLBACK About(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)
{
    static int counter = 0;
    UNREFERENCED_PARAMETER(lParam);
    switch (message)
    {
    case WM_INITDIALOG:
        return (INT_PTR)TRUE;

    case WM_COMMAND:
        if (LOWORD(wParam) == IDOK || LOWORD(wParam) == IDCANCEL)
        {
            EndDialog(hDlg, LOWORD(wParam));
            return (INT_PTR)TRUE;
        }
        else if (LOWORD(wParam) == IDC_BUTTON1)
        {
            wchar_t msg[30];
            wsprintf(msg, L"Hello World!\nCounter: %d", counter);
            MessageBox(hDlg, msg, L"Hello", MB_ICONINFORMATION);
            SendMessage((HWND)lParam, WM_SETTEXT, NULL, (LPARAM)L"Checked");

            HWND okbtn = GetDlgItem(hDlg, IDOK); // get OK button
            SendMessage(okbtn, WM_SETTEXT, NULL, (LPARAM)L"Click me");

            HWND checkbox = GetDlgItem(hDlg, IDC_CHECK1);
            int checked = SendMessage(checkbox, BM_GETCHECK, NULL, NULL);
            EnableWindow(okbtn, !checked);
        }
        break;
    case WM_LBUTTONUP:
        counter++;
        break;
    }
    return (INT_PTR)FALSE;
}


14樓 巨大八爪鱼 2015-12-1 22:43
关于wchar_t宽字符数组的用法,请参阅:
https://zh.arslanbar.net/post.php?t=23331
(适合已经学过char字符数组和char *字符串指针的读者)

內容轉換:

回覆帖子
內容:
用戶名: 您目前是匿名發表。
驗證碼:
看不清?換一張
©2010-2025 Purasbar Ver3.0 [手機版] [桌面版]
除非另有聲明,本站採用知識共享署名-相同方式共享 3.0 Unported許可協議進行許可。