今天要使用radio按鈕,爲了界面風格的一致性,需要做一些簡單的美化,如貼圖,透明化等。於是採用了CMFCButton類。
定義了一個radio對象CMFCButton m_btnRadio1;然後進行一些加載圖片的操作,
m_btnRadio1.m_nFlatStyle = CMFCButton::BUTTONSTYLE_SEMIFLAT;
m_btnRadio1.SetImage(b32BitIcons ? IDB_RADIO_OFF32 : IDB_RADIO_OFF);
m_btnRadio1.SetCheckedImage(b32BitIcons ? IDB_RADIO_ON32 : IDB_RADIO_ON);
m_btnRadio1.SizeToContent();
m_btnRadio1.SetCheck(TRUE);
運行之後如圖,並沒有一併的應用到其他的radio中。而且把radio1中給獨立分組中去了。這裏和CButton有了明顯的區別。CMFCButton中不是按組定義radio對象的。
在mfc中只有定義了Group屬性的radio才能到Class Wizard中去定義變量。否則,只能手動添加。
這裏要給其他3個radio定義對象,手動添加。
//在頭文件中添加
class CPage1 : public CMFCPropertyPage
{
///////////
其他內容省略
//////////
CMFCButton m_btnRadio1;
CMFCButton m_btnRadio2;
CMFCButton m_btnRadio3;
CMFCButton m_btnRadio4;
};
//在cpp文件中添加
void CPage1::DoDataExchange(CDataExchange* pDX)
{
//////////////////
…………………………
//////////////////
DDX_Control(pDX, IDC_RADIO1, m_btnRadio1);
DDX_Control(pDX, IDC_RADIO2, m_btnRadio2);
DDX_Control(pDX, IDC_RADIO3, m_btnRadio3);
DDX_Control(pDX, IDC_RADIO4, m_btnRadio4);
}
BOOL CPage1::OnInitDialog()
{
////////////////////////////////
……………………………………
//////////////////////////////
m_btnRadio1.m_nFlatStyle = CMFCButton::BUTTONSTYLE_SEMIFLAT;
m_btnRadio2.m_nFlatStyle = CMFCButton::BUTTONSTYLE_SEMIFLAT;
m_btnRadio3.m_nFlatStyle = CMFCButton::BUTTONSTYLE_SEMIFLAT;
m_btnRadio4.m_nFlatStyle = CMFCButton::BUTTONSTYLE_SEMIFLAT;
m_btnRadio1.SetImage(b32BitIcons ? IDB_RADIO_OFF32 : IDB_RADIO_OFF);
m_btnRadio2.SetImage(b32BitIcons ? IDB_RADIO_OFF32 : IDB_RADIO_OFF);
m_btnRadio3.SetImage(b32BitIcons ? IDB_RADIO_OFF32 : IDB_RADIO_OFF);
m_btnRadio4.SetImage(b32BitIcons ? IDB_RADIO_OFF32 : IDB_RADIO_OFF);
m_btnRadio1.SetCheckedImage(b32BitIcons ? IDB_RADIO_ON32 : IDB_RADIO_ON);
m_btnRadio2.SetCheckedImage(b32BitIcons ? IDB_RADIO_ON32 : IDB_RADIO_ON);
m_btnRadio3.SetCheckedImage(b32BitIcons ? IDB_RADIO_ON32 : IDB_RADIO_ON);
m_btnRadio4.SetCheckedImage(b32BitIcons ? IDB_RADIO_ON32 : IDB_RADIO_ON);
m_btnRadio1.SizeToContent();
m_btnRadio2.SizeToContent();
m_btnRadio3.SizeToContent();
m_btnRadio4.SizeToContent();
m_btnRadio1.SetCheck(TRUE);
return TRUE; // return TRUE unless you set the focus to a control
}
添加radio響應函數。我這裏把4個radio都對應到同一個函數。
BEGIN_MESSAGE_MAP(CPage1, CMFCPropertyPage)
////////////////////////////
……………………
/////////////////////////////
ON_BN_CLICKED(IDC_RADIO1, &CPage1::OnBnClickedRadio)
//下面的需要手動添加
ON_BN_CLICKED(IDC_RADIO2, &CPage1::OnBnClickedRadio)
ON_BN_CLICKED(IDC_RADIO3, &CPage1::OnBnClickedRadio)
ON_BN_CLICKED(IDC_RADIO4, &CPage1::OnBnClickedRadio)
END_MESSAGE_MAP()
////////////////////////////////////////////
//
void CPage1::OnBnClickedRadio()
{
if (m_btnRadio1.GetCheck())
{
//do something
}
if (m_btnRadio2.GetCheck())
{
//do something
}
if (m_btnRadio3.GetCheck())
{
//do something
}
if (m_btnRadio4.GetCheck())
{
//do something
}
}
這裏就完成了CMFCButton類的radio控件使用了.