VC++学习-控件篇(RadioButton)

编程环境:VS2013,MFC

转自

https://blog.csdn.net/c_cyoxi/article/details/23868979

https://blog.csdn.net/mengwang024/article/details/41252623

https://blog.csdn.net/LXL110306/article/details/80596857

分组 RadioButton 用法

1 分组

将radio1、radio2、radio3分为1组,radio4、radio5分为另一组;

方法:设置  radio1  的 属性:  group、tabstop、auto均为true

设置  radio2 的 属性: group设为false, tabstop、auto均为true

设置  radio3  的 属性:group设为false,  tabstop、auto均为true

设置  radio4  的 属性:  group、tabstop、auto均为true

设置  radio5  的 属性:  group设为false,tabstop、auto均为true

2

CTRL+D,保证同一组内的radio的tab序号是连续的;调整tab序号的方式是:鼠标点击数字,比如先点3,然后点7,则3和7会交换,即radio1变为7,radio5变为3;

3 关联int型变量  

注意:只需将group属性为true的radio1关联,radio2和radio3无需关联;  同样,radio4需关联,radio5无需关联

4

第4步完成后,在窗体头文件中可以看到

构造函数:

默认第一个radio被选中,即radio1被选中

5 事件处理

设置radio1的事件

设置radio2和radio3的点击事件函数 和 radio1 相同

事件代码:

注意:updatedata(true) 不能少; 它的作用是 将radio的状态值更新给关联的变量,即m_radiobtngroup1;

 

备注:
(1)对一组单选按钮来说,需要设置该组第一个单选按钮Group属性,然后才能在类向导里看到单选按钮的ID并为其关联变量。

(2)初始化时可设置关联变量的值选择默认选中按钮。-1表示未选中任何按钮。

(3)资源视图下,格式->Tab键顺序,依次点击控件可改变Tab键顺序。

修改Radio Button 的背景色以及文字颜色

在Radio Button的所在窗口添加CTLCOLOR事件.

在响应函数中添加如下代码:

HBRUSH CPZVguiShapeDisplaySettingAllDlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
{
    HBRUSH hbr = CDialogEx::OnCtlColor(pDC, pWnd, nCtlColor);
    // TODO:  Change any attributes of the DC here
    TCHAR szClassName[MAX_PATH]={0};
    ::GetClassName(pWnd->m_hWnd, szClassName, sizeof(szClassName)/sizeof(TCHAR)-2);
    if (lstrcmpi(szClassName,_T("Button")) == 0)
    {
        UINT uStyle = ((CButton*)pWnd)->GetButtonStyle( );
        switch(uStyle)
        {
        case BS_AUTORADIOBUTTON:
            {
                static HBRUSH hbrSatic = ::CreateSolidBrush(RGB(255, 255, 255));//背景颜色
                pDC->SetBkMode(TRANSPARENT);
                pDC-> SetTextColor(RGB(0, 0, 0)); //字体颜色
                return hbrSatic;
            }
            break;
        default:
            break;
        }
    }
    // TODO:  Return a different brush if the default is not desired
    return hbr;
}

以上是改变了所有Radio Buttond的背景颜色和字体颜色.

如果只是单纯需要改变几个而已.则把switch中的变量变为需要修改的ID即可.

即:

UINT uId = ((CButton*)pWnd)->GetDlgCtrlID();

switch(uId)
{
    case: ID_RADIO_BUTTON1
}

m_radio控件变量

按钮不可用(变灰)   m_radio. EnableWindow (0);

按钮可用                      m_radio. EnableWindow (1);

按钮不显示 (消失)  m_radio.ShowWindow (0);

按钮显示  出现             m_radio.ShowWindow (0);

((CButton*)GetDlgItem(IDC_RADIO1))->EnableWindow(1);

 

  • 2
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值