MFC按钮
1) 按钮
在Page1中加入按钮资源,并加入按钮设置风格相关的选择框,在CMFCButton中可以设置按钮的图标、图标和文本的位置、信息提示等
m_bRightImage设置图标是否靠右;
m_bTopImage设置图标是否朝上;
m_nFlatStyle设置按钮的属性;
SetImage设置按钮上的图标,其中参数1为正常状态下的图标,参数2为鼠标置于其上的图标,参数3为禁止状态下的图标,如果设置为NULL则表示按钮上没有图标;
SetMouseCursor()设置位于按钮上的鼠标状态,
m_Button.SetMouseCursor(NULL);
m_Button.SetMouseCursorHand();
m_Button.SetMouseCursor(AfxGetApp()->LoadCursor(IDC_CURSOR));
SizetoContent()使得按钮大小和其上的内容相一致
2) 单选按钮
在资源对话框中加入单选按钮,并定义变量为CMFCButton型,分别设置当前图标和Check图标
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( IDB_RADIO_OFF);
m_btnRadio2.SetImage( IDB_RADIO_OFF);
m_btnRadio3.SetImage( IDB_RADIO_OFF);
m_btnRadio4.SetImage( IDB_RADIO_OFF);
m_btnRadio1.SetCheckedImage(IDB_RADIO_ON);
m_btnRadio2.SetCheckedImage(IDB_RADIO_ON);
m_btnRadio3.SetCheckedImage(IDB_RADIO_ON);
m_btnRadio4.SetCheckedImage(IDB_RADIO_ON);
m_btnRadio1.SizeToContent();
m_btnRadio2.SizeToContent();
m_btnRadio3.SizeToContent();
m_btnRadio4.SizeToContent();
m_btnRadio1.SetCheck(TRUE);
3) 复选按钮
在资源对话框中加入复选按钮,并定义变量为CMFCButton型,分别设置当前图标和Check图标。
m_CheckBut.SetImage(IDB_CHECKNO);
m_CheckBut.SetCheckedImage(IDB_CHECK);
m_CheckBut.m_nFlatStyle= CMFCButton::BUTTONSTYLE_SEMIFLAT;
m_CheckBut.SizeToContent();
4) Windows XP风格按钮
CMFCButton默认为XP类型的按钮,能够根据设定的风格显示相应界面的风格,也可去掉这样的风格,成为普通的按钮。
UpdateData();
CMFCButton::EnableWindowsTheming(m_XPStyle);
RedrawWindow();
5) 带菜单的按钮设计
在资源中加入加入按钮控件,并定义变量CMFCMenuButton类型,利用该类的成员函数加入相应的菜单资源,并设置属性
m_menu.LoadMenu(IDR_MENU1);
m_MenuBut.m_hMenu= m_menu.GetSubMenu(0)->GetSafeHmenu();
m_MenuBut.SizeToContent();
m_MenuBut.m_bOSMenu= TRUE;
m_MenuBut.m_bRightArrow= TRUE;
m_MenuBut.m_bStayPressed = TRUE;
m_MenuBut.m_bDefaultClick= TRUE;
CMFCToolBar::AddToolBarForImageCollection(IDR_TOOLBAR_MENU_IMAGES);
按钮菜单的选择,判断选择的是那一个菜单
CStringstrItem;
switch(m_MenuBut.m_nMenuResult)
{
case ID_MENU_MENUITEM1:
strItem= _T("Menu item1");
break;
case ID_MENU_MENUITEM2:
strItem= _T("Menu item2");
break;
case ID_MENU_MENUITEM3:
strItem= _T("Menu item3");
break;
case ID_MENU_MENUITEM4:
strItem= _T("Menu item4");
break;
}
AfxMessageBox(strItem);