VS2010中CMFCButton控件的使用 --2 (radio按鈕的使用)

今天要使用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控件使用了.

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章