MFC按钮(Button)上的文字与图标显示
一、新建对话框
MFC中使用以下两种方法可以得到对话框:
1.1 使用如图1所示的方法,新建一个基于对话框的应用程序;
1.2 在已有的项目中,找到“资源视图”中的Dialog,右键选择“插入Dialog(E)”,如图2所示。
图1
图2
二、按钮(Button)上的文字与图标进行显示操作
以上述1.1的方法为例,在MFC中对话框上,对按钮(Button)上的文字与图标进行显示操作。
2.1 为按钮添加变量
如图3所示,按钮右键选择“添加变量(B)...”,设置变量名,点击“完成”;
图3
2.2 查看对话框类与函数
选中对话框右键,选择“类向导(Z)…”,可查看对话框对应的类、头文件.h、源代码文件.cpp和基类等信息。在对话框类的头文件中,以及源代码文件的数据交换函数DoDataExchange()中可查看2.1添加的按钮变量;
2.3 对按钮进行修改的函数
在初始化函数OnInitDialog()中,添加代码可对按钮的文字和图标进行更改。
三、按钮(Button)的功能实现
下面代码实现了设置字体、设置按钮位置与大小、按钮上添加图标、鼠标在按钮上时显示文字提示、去除按钮默认选中、使用代码在对话框上创建按钮六个功能,前四个功能的效果如图4所示。
图4
3.1 设置字体、设置按钮位置与大小、按钮上添加图标
对话框类头文件中:
CFont m_font;
CToolTipCtrl m_stat;
初始化函数OnInitDialog()中:
m_font.CreateFont(30, 0, 0, 0, FW_NORMAL, 0, 0, 0, 0, 0, 0, 0, 0, _T("字体设置"));
GetDlgItem(IDOK)->SendMessage(WM_SETFONT, WPARAM(HFONT(m_font)), 0);
m_btn_ok.MoveWindow(400, 350, 100, 50);
HICON hIconOK;
hIconOK = (HICON)LoadImage(AfxGetInstanceHandle(), MAKEINTRESOURCE(IDR_MAINFRAME), IMAGE_ICON, 40, 40, LR_DEFAULTCOLOR | LR_CREATEDIBSECTION);
m_btn_ok.SetIcon(hIconOK);
3.2 鼠标在按钮上时显示文字提示
对话框类头文件中:
CToolTipCtrl m_stat;
初始化函数OnInitDialog()中:
m_stat.Create(this);
m_stat.AddTool(GetDlgItem(IDOK), _T("确定按钮"));
m_stat.Activate(TRUE);
此时,鼠标在按钮上时还无法显示文字提示,需要重写对话框类的PreTranslateMessage()函数,如图5所示:
1.右键对话框类,选择“属性( R )”;
2.点击重写;
3.选择PreTranslateMessage();
4.添加 m_stat.RelayEvent(pMsg)。
图5
3.3 去除按钮默认选中
(1)设置按钮的Default Button属性为False;
(2)初始化函数OnInitDialog()的返回值修改为FALSE。
return FALSE;
3.4 使用代码在对话框上创建按钮
对话框类头文件中:
CButton m_btn;;
初始化函数OnInitDialog()中:
m_btn.Create(_T("创建的按钮"), BS_DEFPUSHBUTTON | WS_VISIBLE | WS_CHILD, CRect(0, 0, 100, 50), this, 2);
该方法创建按钮,也可使用3.1、3.2的方法对按钮进行设置;并且在创建按钮时,按钮对象已经与ID相互关联,无需再在数据交换函数中进行关联,如下代码所示:
void CMFCDlg::DoDataExchange(CDataExchange* pDX)
{
CDialogEx::DoDataExchange(pDX);
DDX_Control(pDX, IDOK, m_btn_ok);
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)