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
}


 

猜你喜欢

转载自blog.csdn.net/u014647148/article/details/89914029