通用字体对话框和快捷键的添加.ppt
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 通用 字体 对话框 快捷键 添加
- 资源描述:
-
Click to edit Title Slide,Click to edit Master text styles,Second level,Third level,Fourth level,Fifth level,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,*,第18讲 通用字体对话框的使用,本讲主要内容,使用CFontDialog,为菜单命令添加快捷键,2,使用CFontDialog,前面的案例程序在输出文本时使用的是默认情况下系统提供的默认字体。如果需要可以改变显示文本的字体。,字体也是GDI对象,MFC类CFont对GDI字体对象进行了封装,可以利用CFont类创建自己的字体,之后将创建的字体选入设备环境,用于在设备环境中进行文本输出。,为了方便灵活地使用字体,Windows提供了一个通用字体对话框,应用程序可以使用它来选择不同的字体,设置字号和字体颜色等。该对话框的MFC类是CFontDialog类。,3,使用CFontDialog,【例9-6】,在例9-5程序的基础上,增加一个“文本|设置字体”菜单项,当执行“设置字体”命令时,使用通用字体对话框动态设置所需要的字体。,【,编程步骤,】,(1)添加一个“文本|设置字体”菜单项。ID为ID_TEXT_STYLE,Caption为“设置字体”。,(2)添加“设置字体”菜单项的响应函数。,4,使用CFontDialog,(3)在文档类中添加字体和字体颜色成员变量。,CFont m_font;,/用户所选择的字体,COLORREF m_TextColor;,/用户所选择的字体颜色,(4)编写“设置字体”菜单项的响应函数。,void CMyTextOutDoc:OnTextStyle(),/TODO:Add your command handler code here,CFontDialog dlgFont;,/通用字体对话框,if(dlgFont.DoModal()=IDOK),m_font.DeleteObject();,LOGFONT LogFnt;,dlgFont.GetCurrentFont(,m_font.CreateFontIndirect(,m_TextColor=dlgFont.GetColor();,UpdateAllViews(NULL);,当应用程序需要使用某种字体时,首先使用CFont类创建逻辑字体对象,之后利用CDC类的成员函数SelectObject()将字体选入设备环境,创建字体必须使用CFont类的成员函数。利用CFont创建字体的方法是:,BOOL CreateFontIndirect(const LOGFONT*lpLogFont),m_font.DeleteObject();,为什么在CMyTextOutDoc:OnTextStyle()中要使用DeleteObject删除m_font关联的对象资源?,因为m_font对象原来已与某种字体资源相关联,现在m_font又试图与新字体资源相关联时,就会出错。而使用DeleteObject,切断这种关联,释放该字体资源,再与新资源相关联就没有问题了。,该对象通过LOGFONT结构创建字体,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_FACESIZE;,LOGFONT;,应用程序绘制图形或使用字体时通常需要使用颜色。GDI使用COLORREF类型的数据来保存颜色,该数据是一个32bit整型数值,它代表了一种颜色,每一种颜色由红、绿、蓝三色分量来表示,每种颜色分量的取值范围为0255。,使用了通用字体对话框类CFontDialog来设置字体和颜色。,5,使用CFontDialog,(5)修改OnDraw函数。在OnDraw函数里设置字体、字体颜色并输出文本。,void CMyTextOutView:OnDraw(CDC*pDC),/TODO:add draw code for native data here,CFont*pfntOld=pDC-SelectObject(,/设置字体,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()函数的功能是该函数选择一对象到指定的设备环境中,该新对象替换先前的相同类型的对象。函数原型是:,HGDIOBJ SelectObject(HGDIOBJ hgdiobj),参数hgdiobj指的是被选择的对象的句柄。,返回值:如果函数执行成功,那么返回值是被取代的对象的句柄。否则返回NULL。,6,使用CFontDialog,编译连接运行程序,可以设置字体,输出文本。,7,为菜单命令添加快捷键,命令消息可以来源于多种界面对象,如前面使用过的菜单项、工具栏按钮、对话框按钮等,另外还常使用快捷键来产生命令消息。,快捷键是利用键盘输入的方式代替执行应用程序的菜单或工具栏命令。,由于快捷键通常要和菜单项配合使用,因此不必为快捷键单独添加消息处理函数。,8,完成未能在课上完成的课堂练习。,(4)为该菜单命令再添加一个快捷键F1。,BYTE lfCharSet;,利用CFont创建字体的方法是:,CFontDialog dlgFont;/通用字体对话框,为什么在CMyTextOutDoc:OnTextStyle()中要使用DeleteObject删除m_font关联的对象资源?,LONG lfWidth;,void CMainFrame:OnMyHelp(),BYTE lfClipPrecision;,参数hgdiobj指的是被选择的对象的句柄。,MB_YESNOCANCEL,int AfxMessageBox(LPCTSTR lpszText,UINT nType=MB_OK,UINT nIDHelp=0);,使用CFontDialog,为什么在CMyTextOutDoc:OnTextStyle()中要使用DeleteObject删除m_font关联的对象资源?,VK_CAPS_LOCK,为菜单命令添加快捷键,【例9-7】,修改例9-6程序,为之增加一个“帮助|我的帮助”菜单项,当执行该命令时,使用一个信息对话框显示简单的帮助信息。按下Ctrl+H键后执行同样的动作。,9,为菜单命令添加快捷键,【,编程步骤,】,(1)添加“帮助/我的帮助”菜单项。ID为ID_MY_HELP,Caption为“我的帮助(&H)”,设Ctrl+H作为该命令的快捷键。,(2)添加菜单命令“我的帮助”的响应函数OnMyHelp。,10,为菜单命令添加快捷键,添加代码如下:,void CMainFrame:OnMyHelp(),/TODO:Add your command handler code here,MessageBox(这是一个关于在视图区显示文本的案例,我的帮助,MB_ICONINFORMATION|MB_OK);,11,应用程序绘制图形或使用字体时通常需要使用颜色。,UpdateAllViews(NULL);,if(dlgFont.,其中参数lpszText是信息对话框中要显示的文本内容,lpszCaption表示对话框的标题,当其为NULL时使用默认的标题。,HGDIOBJ SelectObject(HGDIOBJ hgdiobj),在Key下拉列表中输入快捷键H。,BYTE lfOutPrecision;,由于快捷键通常要和菜单项配合使用,因此不必为快捷键单独添加消息处理函数。,CWnd:MessageBox()成员函数可以用于控件、对话框和窗口等一些窗口类中。,BYTE lfPitchAndFamily;,使用CFontDialog,使用CFontDialog,使用CFontDialog,点击工作区ResourceView标签,展开Accelerator,双击IDR_MAINFRAME,打开快捷键编辑器。,MFC提供了相应的函数来实现信息对话框。,MB_ABORTRETRYIGNORE,双击快捷键列表底部的空白行,打开快捷键属性对话框,在ID下拉列表框中选择ID_MY_HELP选项。,BYTE lfPitchAndFamily;,为菜单命令添加快捷键,(3)为菜单命令“我的帮助”添加快捷键,点击工作区ResourceView标签,展开Accelerator,双击IDR_MAINFRAME,打开快捷键编辑器。,双击快捷键列表底部的空白行,打开快捷键属性对话框,在ID下拉列表框中选择ID_MY_HELP选项。在Key下拉列表中输入快捷键H。组合键在Modifiers栏中设置,确定Ctrl、Alt、Shift是否为快捷键的一部分。,12,为菜单命令添加快捷键,编译连接运行之后,可以使用快捷键Ctrl+H调用菜单命令“我的帮助”。运行结果如图所示。,13,为菜单命令添加快捷键,(4)为该菜单命令再添加一个快捷键F1。可以使用另外一种简便方法。,先单击Accel Properties对话框中的Next Key Typed按钮,再按F1键即可。,这时,可以看到Key被设定为VK_F1,表示F1成为“我的帮助”的快捷键,而之前设定的Ctrl+H被取代。,14,为菜单命令添加快捷键,常用的键盘虚拟码,符号常量名称,等价的键盘键,符号常量名称,等价的键盘键,VK_ENTER,Enter键,VK_BACK_SPACE,Back Space键,VK_SHIFT,Shift键,VK_CONTROL,Ctrl键,VK_ALT,Alt键,VK_PAUSE,Pause键,VK_CAPS_LOCK,Caps Lock键,VK_ESCAPE,Esc键,VK_PAGE_UP,Page Up键,VK_PAGE_DOWN,Page Down键,VK_END,End键,VK_HOME,Home键,VK_LEFT,左箭头键,VK_RIGHT,右箭头键,VK_UP,上箭头键,VK_DOWN,下箭头键,VK_0VK_9,字符09键,VK_AVK_Z,字符AZ键,VK_TAB,制表键,15,为菜单命令添加快捷键,信息对话框是最简单的对话框,不需要用户创建就可以直接使用。信息对话框可以用来显示有关的提示信息。MFC提供了相应的函数来实现信息对话框。,int AfxMessageBox(LPCTSTR lpszText,UINT nType=MB_OK,UINT nIDHelp=0);,int CWnd:MessageBox(LPCTSTR lpszText,LPCTSTR lpszCaption=NULL,UINT nType=MB_OK);,16,为菜单命令添加快捷键,这两个函数分别是MFC全局函数和CWnd类的成员函数,它们的功能基本相同,但使用的范围有所不同。,AfxMessageBox()函数可以使用于程序的任何地方;,CWnd:MessageBox()成员函数可以用于控件、对话框和窗口等一些窗口类中。,其中参数lpszText是信息对话框中要显示的文本内容,lpszCaption表示对话框的标题,当其为NULL时使用默认的标题。nType表示对话框的图标和按钮风格。,17,为菜单命令添加快捷键,信息对话框中可用的图标,图标类型,参数,错误,MB_ICONHAND,MB_ICONSTOP,MB_ICONERROR,问题,MB_ICONQUESTION,警告,MB_ICONEXCLAMATION,MB_ICONWARNING,信息,MB_ICONASTERISK,MB_ICONINFORMATION,18,为菜单命令添加快捷键,参数,按钮类型,MB_ABORTRETRYIGNORE,表示含有Abort、Retry和Ignore按钮,MB_OK,表示含有OK按钮,MB_OKCANCEL,表示含有OK按钮和Cancel按钮,MB_RETRYCANCEL,表示含有Retry和Cancel按钮,MB_YESNO,表示含有Yes和No按钮,MB_YESNOCANCEL,表示含有Yes、No和Cancel按钮,信息对话框中常用的按钮,19,课堂练习,完成例9-6,例9-7。,课后作业,1.完成未能在课上完成的课堂练习。,2.完成习题9-06、9-07,9-09。,20,展开阅读全文

咨信网声明:本文档由用户上传并分享,仅供学习交流、研究之用,未经授权,严禁复制、发行、汇编、翻译或网络传播等,侵权必究。
咨信网小贴示:
1、浏览或下载可查看了解,请点击【咨信网告知】。
2、下载文件中如有侵权或不适当内容,将立即纠正。
3、如果因为网速或其他原因下载失败请重新下载,重复下载[60天内]不扣币。
4、开具发票登录电脑端申请,请点击【索取发票】。
咨信网客服组:【微信客服】
1、浏览或下载可查看了解,请点击【咨信网告知】。
2、下载文件中如有侵权或不适当内容,将立即纠正。
3、如果因为网速或其他原因下载失败请重新下载,重复下载[60天内]不扣币。
4、开具发票登录电脑端申请,请点击【索取发票】。
咨信网客服组:【微信客服】


通用字体对话框和快捷键的添加.ppt
















自信AI助手














微信客服
客服QQ
发送邮件
意见反馈



链接地址:https://www.zixin.com.cn/doc/14513293.html