逆向学习-windows编程控件的使用

举报
亿人安全 发表于 2023/05/31 22:40:50 2023/05/31
【摘要】 控件的使用复选框和单选框的创建DialogBoxW 用这个函数创建对话框标题可以通过这样修改标题然后添加几个多选框和点选框直接ctrl+D 可以看见都是标了序号的 然后看见这个单选框随便选一个右键属性有一个组的属性 值是FALSE 这几个单选框的组属性都是false 所以目前这几个都是一组的 但是如果把喜欢 和不确定改为 true之后 不确定和上面的就不是一组的了 从喜欢往下数 直到遇到一个...

控件的使用


复选框和单选框的创建

DialogBoxW 用这个函数创建对话框

标题可以通过这样修改标题

然后添加几个多选框和点选框

直接ctrl+D 可以看见都是标了序号的 然后看见这个单选框

随便选一个右键属性

有一个组的属性 值是FALSE 这几个单选框的组属性都是false 所以目前这几个都是一组的 但是如果把喜欢 和不确定改为 true之后

不确定和上面的就不是一组的了 从喜欢往下数 直到遇到一个为true的 才分为另一组

在启动的时候默认选择一个多选框




这个函数可以直接代替上面两行

获取选中的状态



#include<Windows.h>
#include<CommCtrl.h>
#include"resource.h"
​
INT_PTR CALLBACK Dlgproc(
    HWND hwnd,
    UINT uMsg,
    WPARAM wParam,
    LPARAM lParam
)
{
    switch (uMsg)
    {
    case WM_INITDIALOG:
    {
        /*HWND hcheck1 = GetDlgItem(hwnd, IDC_CHECK1);
        SendMessageW(hcheck1,BM_SETCHECK,BM_GETCHECK,0);*/
        //SendDlgItemMessageW(hwnd, IDC_CHECK1, BM_SETCHECK, BM_GETCHECK,0);
        break;
    }
    case WM_CLOSE:
    {
        EndDialog(hwnd, 0);
        break;
    }
    case WM_COMMAND:
    {
        WORD ControlId = LOWORD(wParam);
        switch (ControlId)
        {
            case IDC_BUTTON1:
            {
                WCHAR buff[20]{ 0 };
                for (UINT BTNID = IDC_CHECK1; BTNID <= IDC_CHECK3; BTNID++)
                {
                    UINT Checked = SendDlgItemMessageW(hwnd, BTNID, BM_GETCHECK, 0, 0);
                    if (Checked == BST_CHECKED) {
                        GetDlgItemTextW(hwnd, BTNID, buff, 20);
                        MessageBoxW(hwnd, buff, L"提示", MB_OK);
                    }
                }
                break;
            }
            case IDC_BUTTON2:
            {
                WCHAR buff[20]{ 0 };
                for (UINT BTNID = IDC_RADIO1; BTNID <= IDC_RADIO3; BTNID++)
                {
                    UINT Checked = SendDlgItemMessageW(hwnd, BTNID, BM_GETCHECK, 0, 0);
                    if (Checked == BST_CHECKED) {
                        GetDlgItemTextW(hwnd, BTNID, buff, 20);
                        MessageBoxW(hwnd, buff, L"提示", MB_OK);
                        break;
                    }
                }
                break;
            }
            default:
                break;
        }
    
        break;
    }
    default:
        break;
    }
    return FALSE;
}
int WINAPI WinMain(
    HINSTANCE hInstance,
    HINSTANCE hPrevInstance,
    LPSTR     lpCmdLine,
    int       nShowCmd
) 
{
​
    DialogBoxW(hInstance, MAKEINTRESOURCEW(IDD_DIALOG1), NULL, Dlgproc);
    return 0;
}
【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。