![通用字体对话框和快捷键的添加_第1页](http://file3.renrendoc.com/fileroot_temp3/2022-3/14/b4489ddf-7214-4ad8-928b-67a05e54d341/b4489ddf-7214-4ad8-928b-67a05e54d3411.gif)
![通用字体对话框和快捷键的添加_第2页](http://file3.renrendoc.com/fileroot_temp3/2022-3/14/b4489ddf-7214-4ad8-928b-67a05e54d341/b4489ddf-7214-4ad8-928b-67a05e54d3412.gif)
![通用字体对话框和快捷键的添加_第3页](http://file3.renrendoc.com/fileroot_temp3/2022-3/14/b4489ddf-7214-4ad8-928b-67a05e54d341/b4489ddf-7214-4ad8-928b-67a05e54d3413.gif)
![通用字体对话框和快捷键的添加_第4页](http://file3.renrendoc.com/fileroot_temp3/2022-3/14/b4489ddf-7214-4ad8-928b-67a05e54d341/b4489ddf-7214-4ad8-928b-67a05e54d3414.gif)
![通用字体对话框和快捷键的添加_第5页](http://file3.renrendoc.com/fileroot_temp3/2022-3/14/b4489ddf-7214-4ad8-928b-67a05e54d341/b4489ddf-7214-4ad8-928b-67a05e54d3415.gif)
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、2本讲主要内容使用CFontDialog 为菜单命令添加快捷键 3使用CFontDialog前面的案例程序在输出文本时使用的是默认情况下系统提供的默认字体。如果需要可以改变显示文本的字体。字体也是GDI对象,MFC类CFont对GDI字体对象进行了封装,可以利用CFont类创建自己的字体,之后将创建的字体选入设备环境,用于在设备环境中进行文本输出。为了方便灵活地使用字体,Windows提供了一个通用字体对话框,应用程序可以使用它来选择不同的字体,设置字号和字体颜色等。该对话框的MFC类是CFontDialog类。 4使用CFontDialog【例【例9-6】在例9-5程序的基础上,增加一个“文
2、本|设置字体”菜单项,当执行“设置字体”命令时,使用通用字体对话框动态设置所需要的字体。【编程步骤编程步骤】(1)添加一个“文本|设置字体”菜单项。ID为ID_TEXT_STYLE,Caption为“设置字体”。(2)添加“设置字体”菜单项的响应函数。 5使用CFontDialog(3)在文档类中添加字体和字体颜色成员变量。CFont m_font; /用户所选择的字体COLORREF m_TextColor; /用户所选择的字体颜色(4)编写“设置字体”菜单项的响应函数。void CMyTextOutDoc:OnTextStyle() / TODO: Add your command han
3、dler code hereCFontDialog dlgFont; /通用字体对话框if(dlgFont.DoModal() = IDOK) m_font.DeleteObject(); LOGFONT LogFnt; dlgFont.GetCurrentFont(&LogFnt); m_font.CreateFontIndirect(&LogFnt); m_TextColor = dlgFont.GetColor(); UpdateAllViews(NULL);当应用程序需要使用某种字体时,首先使用CFont类创建逻辑字体对象,之后利用CDC类的成员函数SelectObject()将字体选
4、入设备环境 创建字体必须使用CFont类的成员函数。利用CFont创建字体的方法是: BOOL CreateFontIndirect(const LOGFONT* lpLogFont )m_font.DeleteObject(); 为什么在CMyTextOutDoc:OnTextStyle()中要使用DeleteObject删除m_font关联的对象资源?因为m_font对象原来已与某种字体资源相关联,现在m_font又试图与新字体资源相关联时,就会出错。而使用DeleteObject,切断这种关联,释放该字体资源,再与新资源相关联就没有问题了。该对象通过该对象通过LOGFONT结构创建字体,
5、结构创建字体,LOGFONT结构的定义如下。结构的定义如下。typedef struct tagLOGFONT LONG lfHeight;LONG lfWidth;LONG lfEscapement;LONG lfOrientation;LONG lfWeight;BYTE lfItalic;BYTE lfUnderline;BYTE lfStrikeOut;BYTE lfCharSet;BYTE lfOutPrecision;BYTE lfClipPrecision;BYTE lfQuality;BYTE lfPitchAndFamily;TCHAR lfFaceNameLF_FACESI
6、ZE; LOGFONT;应用程序绘制图形或使用字体时通常需要使用颜色。 GDI使用COLORREF类型的数据来保存颜色,该数据是一个32bit整型数值,它代表了一种颜色,每一种颜色由红、绿、蓝三色分量来表示,每种颜色分量的取值范围为0255。 使用了通用字体对话框类CFontDialog来设置字体和颜色。 6使用CFontDialog(5)修改OnDraw函数。在OnDraw函数里设置字体、字体颜色并输出文本。void CMyTextOutView:OnDraw(CDC* pDC)/ TODO: add draw code for native data hereCFont *pfntOld
7、= pDC-SelectObject(&pDoc-m_font); /设置字体pDC-SetTextColor(pDoc-m_TextColor); /设置字体颜色 pDC-TextOut(m_TextPos.x,m_TextPos.y,pDoc-m_strText); pDC-SelectObject(pfntOld); /恢复以前的字体当应用程序需要使用用户自己定制的Windows GDI对象时,首先要将其选入设备环境。MFC的CDC类提供了成员函数SelectObject()用于将用户自己创建的GDI对象选入设备环境。 SelectObject()函数的功能是该函数选择一对象到指定的设备
8、环境中,该新对象替换先前的相同类型的对象。函数原型是:HGDIOBJ SelectObject(HGDIOBJ hgdiobj) 参数hgdiobj指的是被选择的对象的句柄。返回值:如果函数执行成功,那么返回值是被取代的对象的句柄。否则返回NULL。7使用CFontDialog编译连接运行程序,可以设置字体,输出文本。 8为菜单命令添加快捷键命令消息可以来源于多种界面对象,如前面使用过的菜单项、工具栏按钮、对话框按钮等,另外还常使用快捷键来产生命令消息。快捷键是利用键盘输入的方式代替执行应用程序的菜单或工具栏命令。由于快捷键通常要和菜单项配合使用,因此不必为快捷键单独添加消息处理函数。9为菜单
9、命令添加快捷键【例【例9-7】修改例9-6程序,为之增加一个“帮助|我的帮助”菜单项,当执行该命令时,使用一个信息对话框显示简单的帮助信息。按下Ctrl+H键后执行同样的动作。10为菜单命令添加快捷键【编程步骤编程步骤】(1)添加“帮助/我的帮助”菜单项。ID为ID_MY_HELP,Caption为“我的帮助(&H)”,设Ctrl+H作为该命令的快捷键。(2)添加菜单命令“我的帮助”的响应函数OnMyHelp。 11为菜单命令添加快捷键添加代码如下:void CMainFrame:OnMyHelp() / TODO: Add your command handler code hereMess
10、ageBox(这是一个关于在视图区显示这是一个关于在视图区显示文本的案例文本的案例,我的帮助我的帮助, MB_ICONINFORMATION|MB_OK);12为菜单命令添加快捷键(3)为菜单命令“我的帮助”添加快捷键点击工作区ResourceView标签,展开Accelerator,双击IDR_MAINFRAME,打开快捷键编辑器。双击快捷键列表底部的空白行,打开快捷键属性对话框,在ID下拉列表框中选择ID_MY_HELP选项。在Key下拉列表中输入快捷键H。组合键在Modifiers栏中设置,确定Ctrl、Alt、Shift是否为快捷键的一部分。 13为菜单命令添加快捷键编译连接运行之后,
11、可以使用快捷键Ctrl+H调用菜单命令“我的帮助”。运行结果如图所示。14为菜单命令添加快捷键(4)为该菜单命令再添加一个快捷键F1。可以使用另外一种简便方法。先单击Accel Properties对话框中的Next Key Typed按钮,再按F1键即可。这时,可以看到Key被设定为VK_F1,表示F1成为“我的帮助”的快捷键,而之前设定的Ctrl+H被取代。15为菜单命令添加快捷键常用的键盘虚拟码 符号常量名称等价的键盘键符号常量名称等价的键盘键VK_ENTEREnter键VK_BACK_SPACEBack Space键VK_SHIFTShift键VK_CONTROLCtrl键VK_ALT
12、Alt键VK_PAUSEPause键VK_CAPS_LOCKCaps Lock键VK_ESCAPEEsc键VK_PAGE_UPPage Up键VK_PAGE_DOWNPage Down键VK_ENDEnd键VK_HOMEHome键VK_LEFT左箭头键VK_RIGHT右箭头键VK_UP上箭头键VK_DOWN下箭头键VK_0VK_9字符09键VK_AVK_Z字符AZ键VK_TAB制表键16为菜单命令添加快捷键信息对话框是最简单的对话框,不需要用户创建就可以直接使用。信息对话框可以用来显示有关的提示信息。MFC提供了相应的函数来实现信息对话框。int AfxMessageBox(LPCTSTR l
13、pszText, UINT nType = MB_OK,UINT nIDHelp = 0);int CWnd:MessageBox(LPCTSTR lpszText, LPCTSTR lpszCaption = NULL, UINT nType = MB_OK); 17为菜单命令添加快捷键 这两个函数分别是MFC全局函数和CWnd类的成员函数,它们的功能基本相同,但使用的范围有所不同。AfxMessageBox()函数可以使用于程序的任何地方;CWnd:MessageBox()成员函数可以用于控件、对话框和窗口等一些窗口类中。其中参数lpszText是信息对话框中要显示的文本内容,lpszCaption表示对话框的标题,当其为NULL时使用默认的标题。nType表示对话框的图标和按钮风格。 18为菜单命令添加快捷键信息对话框中可用的图标 图标类型参数错误MB_ICONHAND,MB_ICONSTOP,MB_ICONERROR问题MB_ICONQUESTION警告MB_ICONEXCLAMATION,MB_ICONWARNING信息MB_ICONASTERISK,MB_ICONINFORMATION19为菜单命令添加快捷键参数按钮类型MB_ABORTRETRYIGNORE表示含有
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 北京邮电大学嵌入式操作系统的实验报告
- 温控仪表项目效益评估报告
- 收养小孩入户申请书
- 金融科技领域敏感数据存储防护
- 2021人教版四年级下册数学第四单元小数的意义和性质测试卷(含答案)
- 线上教育峰会赞助合同(2篇)
- 充电桩 申请书
- 现代办公环境下老旧小区物业管理的优化策略
- 用高质量移通网维护人们的安全研究
- 医学高级职称正高《小儿外科学》(题库)考前点题卷一
- 排水沟施工合同电子版(精选5篇)
- 清新典雅文艺教师公开课说课PPT课件模板
- 大气商务企业培训之团队合作的重要性PPT模板
- 2022年四川省成都市成华区七年级下学期期末语文试卷
- 石油化工、煤化工、天然气化工优劣势分析
- 10kV配网工程变配电(台架变、箱变、电缆分接箱)的安装设计施工精细化标准
- Q∕GDW 12118.3-2021 人工智能平台架构及技术要求 第3部分:样本库格式
- 广东省义务教育阶段学生转学转出申请表(样本)
- 毕业论文牛仔布染色工艺和质量控制
- 机耕路工程施工方案与技术措施
- 如何成为一个优秀的生产经理
评论
0/150
提交评论