单选按钮控件和复选框控件_单选按钮控件和复选框控件都具有

单选按钮控件和复选框控件_单选按钮控件和复选框控件都具有Windows单按钮、复选框、分组框控件单选按钮(Radio Button)和复选框(Check Box)是常见的Windows控件,用于从给出的选项中选择一项或多项,如下图所示:单选钮与复选框单选按钮是互斥的,只能选择其中一项;而复选框没有限制,可以选择一项或多项。单选按钮和复选框都是一种特殊的按钮,窗口类名称都是button,只不过增加了一些特殊的窗口样式罢了。单选按钮的样式为BS_…

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

Windows单按钮、复选框、分组框控件

单选按钮(Radio Button)和复选框(Check Box)是常见的Windows控件,用于从给出的选项中选择一项或多项,如下图所示:

单选钮与复选框

在这里插入图片描述
单选按钮是互斥的,只能选择其中一项;而复选框没有限制,可以选择一项或多项。

单选按钮和复选框都是一种特殊的按钮,窗口类名称都是button,只不过增加了一些特殊的窗口样式罢了。单选按钮的样式为BS_AUTORADIOBUTTON,复选框的样式为BS_AUTOCHECKBOX。例如:

//创建一个单选按钮
CreateWindow(
    TEXT("button"), TEXT("单选按钮"),
    WS_CHILD | WS_VISIBLE | BS_LEFT | BS_AUTORADIOBUTTON/*单选按钮*/,
    235, 40, 100, 26,
    hWnd, (HMENU)7, hInst, NULL
);
//创建一个复选框
CreateWindow(
    TEXT("button"), TEXT("复选框"),
    WS_CHILD | WS_VISIBLE | BS_LEFT | BS_AUTOCHECKBOX/*复选框*/,
    95, 70, 50, 26,
    hWnd, (HMENU)9, hInst, NULL
);

如上图所示,单选按钮一般是分组的,一组单选按钮之间是互斥的,只能选择其中一个。一个窗口可以包含多组单选按钮。

要想为单选按钮分组,可以增加WS_GROUP样式。设置了 WS_GROUP 样式的单选框为一组中的首元素,随后的所有单选按钮都和它在同一组,直到下一个设置了 WS_GROUP 样式的单选按钮。

下面的代码,将实现上图中所示的单选按钮和复选框:

//窗口过程
LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam){ 
   
    PAINTSTRUCT ps;
    HDC hdc;
    static HFONT hFont;  //逻辑字体
    //一组单选按钮
    static HWND labSex;  //静态文本框--性别
    static HWND radioMale;  //单选按钮--男
    static HWND radioFemale;  //单选按钮--女
    //一组单选按钮
    static HWND labMarriage;  //静态文本框--婚姻状况
    static HWND radioMarried;  //单选按钮--已婚
    static HWND radioSingle;  //单选按钮--未婚
    static HWND radioSecrecy;  //单选按钮--保密
    //一组复选框
    static HWND labPet;  //静态文本框--你的宠物
    static HWND checkboxDog;  //复选框--狗
    static HWND checkboxCat;  //复选框--猫
    static HWND checkboxFish;  //复选框--鱼
    static HWND checkboxOther;  //复选框--其他
    switch (message){ 
   
        case  WM_CREATE:
            hFont = CreateFont(
                -14, -7, 0, 0, 400,
                FALSE, FALSE, FALSE,DEFAULT_CHARSET,
                OUT_CHARACTER_PRECIS, CLIP_CHARACTER_PRECIS, DEFAULT_QUALITY,
                FF_DONTCARE, TEXT("微软雅黑")
            );
            //选择性别
            labSex = CreateWindow(
                TEXT("static"), TEXT("你的性别:"),
                WS_CHILD | WS_VISIBLE | SS_CENTERIMAGE | SS_RIGHT/*文字居右*/,
                10, 10, 80, 26,
                hWnd, (HMENU)1, hInst, NULL
            );
            radioMale = CreateWindow(
                TEXT("button"), TEXT("男"),
                WS_CHILD | WS_VISIBLE | BS_LEFT/*文字居左*/ | BS_AUTORADIOBUTTON /*单选按钮*/ | WS_GROUP,
                95, 10, 50, 26,
                hWnd, (HMENU)2, hInst, NULL
            );
            radioFemale = CreateWindow(
                TEXT("button"), TEXT("女"),
                WS_CHILD | WS_VISIBLE | BS_LEFT | BS_AUTORADIOBUTTON,
                150, 10, 50, 26,
                hWnd, (HMENU)2, hInst, NULL
            );
            //选择婚姻状况
            labMarriage = CreateWindow(
                TEXT("static"), TEXT("婚姻状况:"),
                WS_CHILD | WS_VISIBLE | SS_CENTERIMAGE | SS_RIGHT,
                10, 40, 80, 26,
                hWnd, (HMENU)4, hInst, NULL
            );
            radioMarried = CreateWindow(
                TEXT("button"), TEXT("已婚"),
                WS_CHILD | WS_VISIBLE | BS_LEFT | BS_AUTORADIOBUTTON | WS_GROUP,
                95, 40, 65, 26,
                hWnd, (HMENU)5, hInst, NULL
            );
            radioSingle = CreateWindow(
                TEXT("button"), TEXT("未婚"),
                WS_CHILD | WS_VISIBLE | BS_LEFT | BS_AUTORADIOBUTTON,
                165, 40, 65, 26,
                hWnd, (HMENU)6, hInst, NULL
            );
            radioSecrecy = CreateWindow(
                TEXT("button"), TEXT("保密"),
                WS_CHILD | WS_VISIBLE | BS_LEFT | BS_AUTORADIOBUTTON,
                235, 40, 100, 26,
                hWnd, (HMENU)7, hInst, NULL
            );
            //你的宠物
            labPet = CreateWindow(
                TEXT("static"), TEXT("你的宠物:"),
                WS_CHILD | WS_VISIBLE | SS_CENTERIMAGE | SS_RIGHT,
                10, 70, 80, 26,
                hWnd, (HMENU)8, hInst, NULL
            );
           
            checkboxDog = CreateWindow(
                TEXT("button"), TEXT("狗"),
                WS_CHILD | WS_VISIBLE | BS_LEFT | BS_AUTOCHECKBOX/*复选框*/,
                95, 70, 50, 26,
                hWnd, (HMENU)9, hInst, NULL
            );
            checkboxCat = CreateWindow(
                TEXT("button"), TEXT("猫"),
                WS_CHILD | WS_VISIBLE | BS_LEFT | BS_AUTOCHECKBOX,
                150, 70, 50, 26,
                hWnd, (HMENU)10, hInst, NULL
            );
            checkboxFish = CreateWindow(
                TEXT("button"), TEXT("鱼"),
                WS_CHILD | WS_VISIBLE | BS_LEFT | BS_AUTOCHECKBOX,
                205, 70, 50, 26,
                hWnd, (HMENU)11, hInst, NULL
            );
            checkboxOther = CreateWindow(
                TEXT("button"), TEXT("其他"),
                WS_CHILD | WS_VISIBLE | BS_LEFT | BS_AUTOCHECKBOX,
                260, 70, 65, 26,
                hWnd, (HMENU)11, hInst, NULL
            );
            SendMessage(labSex, WM_SETFONT, (WPARAM)hFont, NULL);
            SendMessage(radioMale, WM_SETFONT, (WPARAM)hFont, NULL);
            SendMessage(radioFemale, WM_SETFONT, (WPARAM)hFont, NULL);
            SendMessage(labMarriage, WM_SETFONT, (WPARAM)hFont, NULL);
            SendMessage(radioMarried, WM_SETFONT, (WPARAM)hFont, NULL);
            SendMessage(radioSingle, WM_SETFONT, (WPARAM)hFont, NULL);
            SendMessage(radioSecrecy, WM_SETFONT, (WPARAM)hFont, NULL);
            SendMessage(labPet, WM_SETFONT, (WPARAM)hFont, NULL);
            SendMessage(checkboxDog, WM_SETFONT, (WPARAM)hFont, NULL);
            SendMessage(checkboxCat, WM_SETFONT, (WPARAM)hFont, NULL);
            SendMessage(checkboxFish, WM_SETFONT, (WPARAM)hFont, NULL);
            SendMessage(checkboxOther, WM_SETFONT, (WPARAM)hFont, NULL);
            break;
        case WM_PAINT:
            hdc = BeginPaint(hWnd, &ps);
            // TODO: 在此添加任意绘图代码...
            EndPaint(hWnd, &ps);
            break;
        case WM_DESTROY:
            PostQuitMessage(0);
            break;
        default:
            return DefWindowProc(hWnd, message, wParam, lParam);
    }
    return 0;
}

分组框控件

使用分组框控件(GroupBox)可以对单选按钮、复选框进行更好的分组,如下图所示:
在这里插入图片描述
分组框控件也是一种特殊的按钮,它的样式为BS_GROUPBOX,例如:

//创建分组框控件
hGroupSex = CreateWindow(
    TEXT("button"), TEXT("你的性别"),
    WS_CHILD | WS_VISIBLE | BS_GROUPBOX,
    20, 20, 300, 70,
    hWnd, (HMENU)1, hInst, NULL
);
//接下来添加单选按钮
hRadioMale = CreateWindow(
    TEXT("button"), TEXT("男"),
    WS_CHILD | WS_VISIBLE | BS_LEFT | BS_AUTORADIOBUTTON /*单选按钮*/,
    15, 30, 50, 26,
    hGroupSex /*父窗口为 GroupBox 控件*/, (HMENU)2, hInst, NULL
);
hRadioFemale = CreateWindow(
    TEXT("button"), TEXT("女"),
    WS_CHILD | WS_VISIBLE | BS_LEFT | BS_AUTORADIOBUTTON,
    80, 30, 50, 26,
    hGroupSex, (HMENU)3, hInst, NULL
);

该代码将会创建上图中的第一组按钮。

需要注意的是:单选按钮的父窗口为分组框控件 hGroupSex,而不是顶级窗口 hWnd。

完整的示例代码较长,就不在这里展示了,如有需要,请继续查看本节完整代码。

链接https://blog.csdn.net/weixin_45525272/article/details/104332539

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/170967.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 使用 HTML、CSS 和 JS 创建在线音乐播放器(含免费完整源码)

    使用 HTML、CSS 和 JS 创建在线音乐播放器(含免费完整源码)直接跳到末尾获取完整源码今天我将带着大家使用HTML、CSS和JS创建音乐播放器,没有使用任何其他库。我们的音乐播放器具有三个部分。主屏幕、播放器部分和播放列表部分。我们的主页部分有一个平滑的工作滑块,也有水平滚动。这个音乐播放器最好的部分是它最小化了音乐播放器。是的,您可以最小化和最大化播放器本身。使这个项目成为一个很棒的音乐播放器。❤️使用HTML、CSS和JS创建在线音乐播放器❤️????在线演示地址????完整代码结构????home-section首页部分???

    2022年6月26日
    60
  • C语言随堂笔记

    C语言随堂笔记

    2020年11月8日
    209
  • 创新与项目管理_创新与创业管理

    创新与项目管理_创新与创业管理值此新商业时代,作为组织内保证所有项目成功交付,支撑组织战略目标实现的PMO,在现代企业管理和商业运作中将扮演着十分重要的角色。现阶段,虽然PMO随着项目管理的普及和深入应用,已经成为组织项目管理发展的新趋势,但是它在迎来新的发展机遇的同时也面临着不小的挑战,其PMO管理能力与水平的高低将决定它自身在支撑组织战略中的价值程度。为进一步加强PMO人士之间的广泛交流,分享成功的PMO运作实践,促进…

    2022年8月31日
    3
  • [技术分享]OSI七层模型详解

    [技术分享]OSI七层模型详解

    2022年2月18日
    49
  • 基于jQuery的自适应图片左右切换

    效果预览:http://hovertree.com/code/jquery/smjv6d0n.htm基于jQuery编写的横向自适应幻灯片切换特效全屏自适应jquery焦点图切换特效,在IE6这个

    2021年12月21日
    50
  • vue slot插槽_笔记本内存条插槽显示4个

    vue slot插槽_笔记本内存条插槽显示4个为什么使用slotslot(插槽)在生活中很多地方都有插槽,电脑usb的插槽,插板当中的电源插槽插槽的目的是为了让我们原来的设备具备更多的扩展性比如电脑的USB我们可以插入U盘,手机,鼠标,键

    2022年7月29日
    6

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号