博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
颜色,文件和字体对话框(VC_MFC)
阅读量:6070 次
发布时间:2019-06-20

本文共 6724 字,大约阅读时间需要 22 分钟。

目录 

(本章节中例子都是用 VS2005 编译调试的)


颜色对话框 CColorDialog

[][][]

类成员变量

m_cc成员变量

作用:  记入选择结果,和对话框初始样式.

数据类型:   CHOOSECOLOR 结构体. CHOOSECOLOR结构的定义如下():

View Code
typedef struct { DWORD lStructSize; //结构长度HWND hwndOwner;   //对话框的拥有窗口HWND hInstance;COLORREF rgbResult; //表示选择结果的样色值COLORREF *lpCustColors; DWORD Flags; //设置颜色对话框的功能与外观LPARAM lCustData; LPCCHOOKPROC lpfnHook; LPCTSTR lpTemplateName; } CHOOSECOLOR, *LPCHOOSECOLOR;

 

常用成员函数()

获取颜色

函数原型:

COLORREF GetColor() const;

返回值:  返回一个COLORREF结构,其中包含了对话框中选中的颜色的RGB颜色值

说明:  本函数用于检索用户在对话框中选中的颜色.必须在DoModal之后调用

创建模态对话框

函数原型:

virtual int DoModal();

返回值:  IDOK 或者 IDCANCEL.如果返回了IDCANCEL,则可以调用Windows函数CommDlgExtendedError来检测是否发生了错误

说明:

  • 本函数用于显示Windows通用颜色对话框并接收用户的选择.
  • 如果想通过设置m_cc结构的各个成员来初始化不同的颜色对话框,应在对话框对象构造之后,调用DoModal之前进行.
  • 在调用DoModal之后,可以调用其它的成员函数检索设置信息和用户输入的信息

 

编写颜色对话框

流程图:

代码样例:

实现如下:

View Code
//创建颜色对话框对象CColorDialog dlg;//修改颜色对话框相关属性dlg.m_cc.Flags|=CC_RGBINIT;//创建模态的颜色对话框if(IDOK==dlg.DoModal()){    //用选定的颜色输出文本 "颜色"    CString str;    CClientDC pDC(this);    //pDC.SetTextColor(dlg.m_cc.rgbResult);    pDC.SetTextColor(dlg.GetColor());    str = "颜色";    pDC.TextOutW(190,50,str);}

创建一个 MFC 基于对话框工程,然后在对话框上拖一个 button 控件,如下图所示,然后为 button 添加单击事件响应函数,在函数添加以上代码,后运行程序 

 


字体对话框 CFontDialog

[][][]

成员变量

m_cf 成员变量

作用:  用于保存字体对话框结果,和对话框初始样式.

数据类型:  一个指向 CHOOSEFONT 的结构的指针,结构定义如下:()

View Code
typedef struct { DWORD lStructSize; HWND hwndOwner; HDC hDC; LPLOGFONT lpLogFont; //指向逻辑字体LOGFONT指针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

其中 LOGFONT 结构定义如下:

View Code
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;

 

常用成员函数()

显示相关函数

[][][][][][][][][][]

判断字体是否是突出

函数原型:

BOOL IsStrikeOut()const;

返回值:  如果被选字体具有突出特征,则返回非零值,否则为0

判断字体是否是下划线

函数原型:

BOOL IsUnderline()const;

返回值:   如果被选字体具有下划线特征,则返回非零值,否则为0

判断字体是否是黑体

函数原型

BOOL IsBold()const;

返回值:   如果选定字体具有黑体特征,则返回非零值,否则为0

判断字体是否是斜体

函数原型:

BOOL IsItalic()const;

返回值:   如果被选字体具有斜体特征,则返回非零值,否则为0

获得选择字体颜色

函数原型:

COLORREF GetColor( )const;

返回值:   选定字体的颜色

说明:   调用此成员函数获取选定字体的颜色

返回字体大小

函数原型 :

int GetSize( )const;

返回值:   字体大小,以0.1点表示

说明:   调用此成员函数获取选定字体的大小

返回字体风格名称

函数原型:

CString GetStyleName( )const;

返回值:   字体的风格名称

说明:   调用此成员函数获取选定字体的风格名称

返回字样名称

函数原型:

CString GetFaceName ( ) const;

返回值:   在CFontDialog对话框中选择字体的字样名称

说明:   调用此成员函数获取选择的字体字样名称

返回字体具体信息

函数原型:

void GetCurrentFont(LPLOGFONT lplf); 

参数说明:   lplf   指向LOGFONT结构的指针

说明:

  • 调用此成员函数,将当前选定字体的特征分配给各个LOGFONT结构的成员.其它CFontDialog成员函数访问当前字体的单个特征.
  • 如果在调用DoModal时调用此成员函数,则返回当前选定部分(用户见到的或已被改变的).如果在DoModal之后调用此成员函数(仅当DoModal返回IDOK时),则返回用户实际选择的部分

调用模态对话框

函数原型:

virtual int DoModal( );

返回值:  IDOK 或 IDCANCEL.如果返回 IDCANCEL,则调用 WindowsCommDlgExtendedError 函数判断是否发生了错误.IDOK 或 IDCANCEL 是表明用户选择了 OK 还是 Cancel 按钮的常数

说明:

  • 调用此成员函数显示一个Windows通用字体对话框,并允许用户选择一种字体.
  • 如果想用设置m_cf结构成员的方法初始化各种字体对话控件,则应在调用DoModal之前,及创建了对话对象之后进行.
  • 如果DoModal返回IDOK,可用其它成员函数获得用户输入对话框的设置或信息

 

编写字体对话框

流程图:

代码样例:

实现如下:

View Code
//创建字体对话框对象CFontDialog dlg;//修改字体对话框相关属性dlg.m_cf.Flags |= CF_USESTYLE;//创建模态的字体对话框if(IDOK==dlg.DoModal()){    //用选定的字体输出文本 "字体显示"    CString str;    CClientDC pDC(this);    CFont *pOldFont,font;    //用 CFont 创建对话框选中的逻辑字体    font.CreateFontIndirect(dlg.m_cf.lpLogFont);    //将字体选入设备描述表    pOldFont=pDC.SelectObject(&font);    //将字体选择的颜色设置为字体颜色    pDC.SetTextColor(dlg.m_cf.rgbColors);    str = "字体显示,字体名称为:";    str += dlg.m_cf.lpLogFont->lfFaceName;    pDC.TextOutW(10,50,str);    //还原原先的字体    pDC.SelectObject(pOldFont);}

创建一个 MFC 基于对话框工程,然后在对话框上拖一个 button 控件,如下图所示,然后为 button 添加单击事件响应函数,在函数添加以上代码,后运行程序.

 


文件对话框 CFileDialog

[][][]

成员变量

m_ofn 成员变量

作用:  用这个成员变量的记录选择结果,和对话框初始样式.

数据类型:  一个指向 OPENFILENAME 结构体指针

View Code
typedef struct tagOFN {  DWORD         lStructSize;  HWND          hwndOwner;  HINSTANCE     hInstance;  LPCTSTR       lpstrFilter;  LPTSTR        lpstrCustomFilter;  DWORD         nMaxCustFilter;  DWORD         nFilterIndex;  LPTSTR        lpstrFile;  DWORD         nMaxFile;  LPTSTR        lpstrFileTitle;  DWORD         nMaxFileTitle;  LPCTSTR       lpstrInitialDir;  LPCTSTR       lpstrTitle;  DWORD         Flags;  WORD          nFileOffset;  WORD          nFileExtension;  LPCTSTR       lpstrDefExt;  LPARAM        lCustData;  LPOFNHOOKPROC lpfnHook;  LPCTSTR       lpTemplateName;#if (_WIN32_WINNT >= 0x0500)  void          *pvReserved;  DWORD         dwReserved;  DWORD         FlagsEx;#endif } OPENFILENAME, *LPOPENFILENAME;

 

成员函数()

显示相关函数

[][][][][][[][][]

构造函数

函数原型:

explicit CFileDialog(   BOOL bOpenFileDialog,   LPCTSTR lpszDefExt = NULL,   LPCTSTR lpszFileName = NULL,   DWORD dwFlags = OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT,   LPCTSTR lpszFilter = NULL,   CWnd* pParentWnd = NULL,   DWORD dwSize = 0);

参数说明:

  • bOpenFileDialog:   为TRUE则显示打开对话框,为FALSE则显示保存对话文件对话框
  • lpszDefExt:      指定默认的文件扩展名
  • lpszFileName:    指定默认的文件名
  • dwFlags:        指明一些特定风格
  • lpszFilter:       是最重要的一个参数,它指明可供选择的文件类型和相应的扩展名。参数格式如:
    "Chart Files (*.xlc)|*.xlc|Worksheet Files (*.xls)|*.xls|Data Files (*.xlc;*.xls)|*.xlc; *.xls|All Files (*.*)|*.*||";
    • 文件类型说明和扩展名间用 | 分隔
    • 同种类型文件的扩展名间可以用 ; 分割
    • 每种文件类型间用 | 分隔
    • 末尾用 || 指明.
  • pParentWnd:   为父窗口指针.

获得文件完整路径

函数原型:

CString GetPathName()const;

返回值:  得到完整的文件名包括目录名和扩展名如:c:\test\test1.txt

获得文件目录路径

函数原型:

CString GetFolderPath( ) const;

返回值:  获得文件所在目录路径

获得文件名(含扩展名)

函数原型:

CString GetFileName( )const;

返回值:  得到完整的文件名包括扩展名如:test1.txt

获得文件扩展名

函数原型:

CString GetExtName()const;

返回值:  得到完整文件扩展名如:txt 

获得文件名

函数原型:

CString GetFileTitle ()const;

返回值:  得到完整的文件名不包括目录名和扩展名如:test1

获得第一个文件位置(在多选的情况)

函数原型:

POSITION GetStartPosition()const;

返回值:  对于选择了多个文件的情况得到第一个文件位置

返回文件路径,并设置下个位置(在多选的情况)

函数原型:

CString GetNextPathName( POSITION& pos )const;

返回值:  对于选择了多个文件的情况得到下一个文件位置,并同时返回当前文件名。但必须已经调用过POSITION CFileDialog::GetStartPosition( )来得到最初的POSITION变量

创建模态对话框

函数原型:

virtual int DoModal( );

返回值:  IDOK 或者 IDCANCEL.如果返回了IDCANCEL,则可以调用Windows函数CommDlgExtendedError来检测是否发生了错误

说明:

  • 本函数用于显示Windows通用颜色对话框并接收用户的选择.
  • 如果想通过设置m_cc结构的各个成员来初始化不同的颜色对话框,应在对话框对象构造之后,调用DoModal之前进行.
  • 在调用DoModal之后,可以调用其它的成员函数检索设置信息和用户输入的信息

 

文件对话框编程

流程图:

代码样例:

实现如下:

View Code
//创建字体对话框对象CFileDialog dlg(true,0,0,OFN_OVERWRITEPROMPT|OFN_HIDEREADONLY,L"Cpp File(*.cpp)|*.cpp|Chart Files (*.txt)|*.txt|All Files (*.*)|*.*||");//创建模态的字体对话框if(IDOK==dlg.DoModal()){    //用选定的字体输出文本 "字体显示"    CString str;    CClientDC pDC(this);    str = "文件全路径:  ";    str += dlg.GetPathName();    pDC.TextOutW(10,50,str);}

创建一个 MFC 基于对话框工程,然后在对话框上拖一个 button 控件,如下图所示,然后为 button 添加单击事件响应函数,在函数添加以上代码,后运行程序.

转载地址:http://ncfgx.baihongyu.com/

你可能感兴趣的文章
各种参数的响应时间
查看>>
phoenix将hdfs数据导入hbase
查看>>
phpstorm使用技巧
查看>>
Spark SQL在100TB上的自适应执行实践(转载)
查看>>
理解metrics.classification_report
查看>>
MongoDB学习笔记(一)安装配置
查看>>
Kafka配置项unclean.leader.election.enable造成consumer出现offset重置现象
查看>>
java运行jar命令提示没有主清单属性
查看>>
Objective-C编程基础
查看>>
centos开机自动运行[.sh]程序的方法
查看>>
BitBlt 注意事项(CAPTUREBLT) (转)
查看>>
Vitamio中文API文档(1)—— MediaStore
查看>>
博客园在百科上的介绍
查看>>
POJ 1651 Multiplication Puzzle(区间DP)
查看>>
CKEditor与CKFinder的配置
查看>>
Java提高篇——理解String 及 String.intern() 在实际中的应用
查看>>
Linux 进程与线程三(线程比较--创建线程参数)
查看>>
数据库连接池
查看>>
java 操作redis
查看>>
一步一步学RenderMonkey(3)——改良Phong光照模型 【转】
查看>>