设置 | 登录 | 注册

目前共有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许可协议进行许可。