代码改变世界

Win32 控件篇(4)

2011-03-20 23:00  Clingingboy  阅读(2066)  评论(0编辑  收藏  举报

 

6.16 如何在按钮上显示图标

  1. 加载资源
  2. 转换成ICON对象
  3. 调用控件的SetIcon方法设置ICON
//加载图标
HINSTANCE hInstance = AfxFindResourceHandle(MAKEINTRESOURCE(IDI_ICON),
    RT_GROUP_ICON);
HICON hIcon = ::LoadIcon(hInstance, MAKEINTRESOURCE(IDI_ICON));            

//设置按钮图标
m_ctrlButton.SetIcon(hIcon);

 

6.17 如何在按钮上显示位图

同上方法,只不过方法换成了LoadBitmap和SetBitmap

//加载位图
HINSTANCE hInstance = AfxFindResourceHandle(MAKEINTRESOURCE(IDB_BITMAP), 
    RT_GROUP_ICON);
HBITMAP hBitmap = ::LoadBitmap(hInstance, MAKEINTRESOURCE(IDB_BITMAP));                    

//设置按钮位图
m_ctrlButton.SetBitmap(hBitmap);    

 

6.18 如何实现位图按钮

直接调用LoadBitmaps方法,参数为按钮个状态的不同位图

//加载按钮位图
m_ctrlButton.LoadBitmaps(IDB_UP, IDB_DOWN);

 

6.19 如何设置和获得单选按钮的选中状态

GetCheck方法获取选中状态,SetCheck设置选中状态(1为选中,0为不选中),在.net下一个IsChecked属性可以搞定一切

//设置单选按钮的选中状态
((CButton*)GetDlgItem(IDC_RADIO1))->SetCheck(0);
((CButton*)GetDlgItem(IDC_RADIO2))->SetCheck(1);
((CButton*)GetDlgItem(IDC_RADIO3))->SetCheck(0);

 

6.20 如何设置和获得一组单选按钮的选中状态

  1. CheckRadioButton指定选中的一组Button,并初始选中一个Button
  2. GetCheckedRadioButton获取选中Button的ID
void CheckRadioButton(int nIDFirstButton, int nIDLastButton,
                int nIDCheckButton);
int GetCheckedRadioButton(int nIDFirstButton, int nIDLastButton) const;

首先要在初始化时调用CheckRadioButton方法

//设置组中单选按钮的选中状态
CheckRadioButton(IDC_RADIO1, IDC_RADIO3, IDC_RADIO2);

以下为测试代码:

void CDemoDlg::OnTest() 
{
    //获得组中单选按钮的选中状态
    int nID = GetCheckedRadioButton(IDC_RADIO1, IDC_RADIO3);

    if (nID == IDC_RADIO1)
    {
        AfxMessageBox(_T("单选按钮1选中。"));
    }
    else if (nID == IDC_RADIO2)
    {
        AfxMessageBox(_T("单选按钮2选中。"));
    }
    else if(nID == IDC_RADIO3)
    {
        AfxMessageBox(_T("单选按钮3选中。"));
    }
}