MFC学习笔记之八————颜色对话框与字体对话框
来源:互联网 发布:淘宝代码怎么用 编辑:程序博客网 时间:2024/06/05 06:58
当程序中需要用到画图的时候,就要选择画笔的颜色,在MFC中提供了一个CColorDialog的类,通过此类可以很方便的创建这样一个颜色对话框。其构造函数如下:
CColorDialog( COLORREF clrInit = 0, DWORD dwFlags = 0, CWnd* pParentWnd = NULL );该构造函数含有三个参数,其中
clrInit :指定默认的颜色选择,默认是黑色。
dwFlags:指定一组标记,用来定制颜色对话框的功能和它的外观。
pParentWnd:指向颜色对话框父窗口,后者拥有者窗口的指针。
我们可以使用dialog的doModal()函数创建颜色对话框。在CColorDialog类型中含有一个CHOOSECOLOR的结构体类型的成员变量:m_cc,在CHOOSECOLOR结构体中含有一个rgbResult的成员变量,此变量即保存了用户所选择的颜色的,看看CHOOSECOLOR结构体:
typedef struct { DWORD lStructSize; HWND hwndOwner; HWND hInstance; COLORREF rgbResult; COLORREF * lpCustColors; DWORD Flags; LPARAM lCustData; LPCCHOOKPROC lpfnHook; LPCTSTR lpTemplateName; } CHOOSECOLOR, *LPCHOOSECOLOR;
我们可以使用一下:
CColorDialog dlg;dlg.doModal();//创建颜色对话框如果想要设置颜色对话框的初始选择的颜色,则需要设置该对话框的CC_RGBINIT标记,此标记在CColorDialog中的CHOOSECOLOR类型的成员变量m_cc中可更改。
注意:挡在创建CColorDialog对象dlg的时候,他的数据成员m_cc中的Flags成员已经具有了一些初始的默认标记。当我们将CC_RGBINIT标记直接赋给m_cc.Flags时,会产生错误!所以应该使用以下方式:
dlg.m_cc.Flags |= CC_RGBINIT;//使用位或操作符
与MFC中提供了CColorDialog相同,MFC中也提供了CFontDialog类,利用该类可以创建选择字体的对话框。此类的构造函数如下:
CFontDialog( LPLOGFONT lplfInitial = NULL, DWORD dwFlags = CF_EFFECTS | CF_SCREENFONTS, CDC* pdcPrinter = NULL, CWnd* pParentWnd = NULL );该函数含有四个参数:
lplfInitial :指向LOGFONT结构体的指针,允许用户设置一些字体的特征。
dwFlags :主要设置一个或者多个与选择字体相关的标记。
pdcPrinter :指向打印设备上下文的指针。
pParentWnd :指向字体对话框父窗口的指针。
由CFontDialog的构造函数知道,参数都含有默认值,所以可以在构造字体对话框时候不指定任何参数。同样可以试用以下:
CFontDialog dlg;dlg.doModal();//创建字体对话框CFontDialog类中,含有一个CHOOSEFONT结构体类型的数据成员:m_cf;CHOOSEFONT结构体的定义如下:
typedef struct { DWORD lStructSize; HWND hwndOwner; HDC hDC; LPLOGFONT lpLogFont; INT iPointSize; DWORD Flags; COLORREF rgbColors; LPARAM lCustData; LPCFHOOKPROC lpfnHook; LPCTSTR lpTemplateName; HINSTANCE hInstance; LPTSTR lpszStyle; WORD nFontType; WORD ___MISSING_ALIGNMENT__; INT nSizeMin; INT nSizeMax; } CHOOSEFONT, *LPCHOOSEFONT;在结构体中,其成员lpLogFont是指向逻辑字体的(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 lfFaceName[LF_FACESIZE]; } LOGFONT, *PLOGFONT;其中lfFaceName中存放的就是字体的名字,至于字体对象的创建,首先可以利用CFont类创造一个字体对象,然后利用CFont类的CreateFontIndirect成员函数根据指定特征的逻辑字体(LOGFONT类型)来初始化这个字体对象,该函数声明如下:
BOOL CreateFontIndirect(const LOGFONT* lpLogFont );此函数的功能就是利用参数lpLogFont指向的LOGFONT结构体中的特征来初始化CFont对象
记录下自己的所学,虽然浅薄!!!如果我是一只蜗牛,那就只能慢慢向上爬!
- MFC学习笔记之八————颜色对话框与字体对话框
- MFC学习笔记之八————颜色对话框与字体对话框
- MFC设置对话框、字体对话框、颜色对话框
- MFC设置对话框、字体对话框、颜色对话框
- Android学习笔记(八)——显示进度对话框
- MFC->消息对话框、文件对话框、字体对话框、颜色对话框
- MFC改变对话框字体颜色
- MFC-字体和颜色对话框
- MFC学习笔记之-对话框
- MFC学习笔记之对话框
- MFC——模式对话框与主对话框传值
- MFC—消息对话框
- MFC学习笔记——对话框:路径选择对话框(BROWSEINFO)
- Qt基本对话框之文件对话框,颜色对话框,字体对话框
- MFC笔记——对话框操作
- MFC学习笔记之五—————对话框编程及控件初步操作
- MFC学习笔记之五—————对话框编程及控件的操作
- MFC:颜色字体对话框及控件颜色
- JS动态创建Select的option
- ASP.NET 状态管理
- NDK ReferenceTable overflow (max=512)的解决方法。(zt)
- 完全卸载oracle
- django.south
- MFC学习笔记之八————颜色对话框与字体对话框
- 五、循环结构程序设计
- MinGW下载与安装
- 从追MM谈Java的23种设计模式
- Conversion to Dalvik format failed with error 1
- android系统开发(六)-HAL层开发基础
- Java JDBC连接SQL Server2005错误:通过端口 1433 连接到主机 localhost 的 TCP/IP 连接失败
- OK6410-LINUX2.6.39.2个人移植版本下载(板载硬件驱动基本都已移植成功)
- JSP学习 —— 开篇:JSP,servlet容器,Tomcat,servlet容器之间的关系