目录
(本章节中例子都是用 VS2005 编译调试的)
颜色对话框 CColorDialog
[][][]
类成员变量
m_cc成员变量
作用: 记入选择结果,和对话框初始样式.
数据类型: CHOOSECOLOR 结构体. CHOOSECOLOR结构的定义如下():
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之后,可以调用其它的成员函数检索设置信息和用户输入的信息
编写颜色对话框
流程图:
代码样例:
实现如下:
//创建颜色对话框对象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 的结构的指针,结构定义如下:()
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 结构定义如下:
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,可用其它成员函数获得用户输入对话框的设置或信息
编写字体对话框
流程图:
代码样例:
实现如下:
//创建字体对话框对象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 结构体指针
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之后,可以调用其它的成员函数检索设置信息和用户输入的信息
文件对话框编程
流程图:
代码样例:
实现如下:
//创建字体对话框对象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 添加单击事件响应函数,在函数添加以上代码,后运行程序.