例子1
CString GetPath()
{
CString strPath = "";
BROWSEINFO bInfo;
ZeroMemory(&bInfo, sizeof(bInfo));
bInfo.hwndOwner = m_hWnd;
bInfo.lpszTitle = _T("请选择路径: ");
bInfo.ulFlags = BIF_RETURNONLYFSDIRS;
LPITEMIDLIST lpDlist; //用来保存返回信息的IDList
lpDlist = SHBrowseForFolder(&bInfo) ; //显示选择对话框
if(lpDlist != NULL) //用户按了确定按钮
{
TCHAR chPath[255]; //用来存储路径的字符串
SHGetPathFromIDList(lpDlist, chPath);//把项目标识列表转化成字符串
strPath = chPath; //将TCHAR类型的字符串转换为CString类型的字符串
}
return strPath;
}
例子2
//选择目录按钮
void CDcPackerDlg::OnBnClickedDecgen()
{
char szPath[MAX_PATH]; //存放选择的目录路径
CString str;
ZeroMemory(szPath, sizeof(szPath));
BROWSEINFO bi;
bi.hwndOwner = m_hWnd;
bi.pidlRoot = NULL;
bi.pszDisplayName = szPath;
bi.lpszTitle = "请选择需要打包的目录:";
bi.ulFlags = 0;
bi.lpfn = NULL;
bi.lParam = 0;
bi.iImage = 0;
//弹出选择目录对话框
LPITEMIDLIST lp = SHBrowseForFolder(&bi);
if(lp && SHGetPathFromIDList(lp, szPath))
{
str.Format("选择的目录为 %s", szPath);
AfxMessageBox(str);
}
else
AfxMessageBox("无效的目录,请重新选择");
}
CString CDcPackerDlg::BootOpenDialog() //返回选择的文件名称
{
CString strFile = _T("");
CFileDialog dlgFile(TRUE, NULL, NULL, OFN_HIDEREADONLY, _T("Describe Files (*.cfg)|*.cfg|All Files (*.*)|*.*||"), NULL);
if (dlgFile.DoModal())
{
strFile = dlgFile.GetPathName();
}
return strFile;
}
或
CFileDialog fileDlg(TRUE);
fileDlg.m_ofn.lpstrTitle = _T("打开速度曲线文件");
fileDlg.m_ofn.lpstrFilter = _T("TextFiles(*.txt)\0*.txt\0\0");
if(IDOK == fileDlg.DoModal())
例子2: 保存文件
CFileDialog fileDlg(FALSE);
fileDlg.m_ofn.lpstrTitle = _T("保存速度曲线文件");
fileDlg.m_ofn.lpstrFilter = _T("TextFiles(*.txt)\0*.txt\0\0");//类型过滤器
fileDlg.m_ofn.lpstrDefExt = _T("txt");//设置扩展名
PS:CFileDialog参数详细介绍
首先构造一个对象并提供相应的参数,构造函数原型如下:
CFileDialog::CFileDialog( BOOL bOpenFileDialog, LPCTSTR lpszDefExt = NULL, LPCTSTR lpszFileName = NULL,
DWORD dwFlags = OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT, LPCTSTR lpszFilter = NULL, CWnd* pParentWnd = NULL );
参数意义如下:
bOpenFileDialog 为TRUE则显示打开对话框,为FALSE则显示保存对话文件对话框。
lpszDefExt 指定默认的文件扩展名。 如果为NULL,则不会生成扩展名。
如果不为NULL,则会在未加扩展名时自动生成相关扩展名lpszFileName 指定默认的文件名。 dwFlags 指明一些特定风格。
lpszFilter 是最重要的一个参数,它指明可供选择的文件类型和相应的扩展名。
参数格式如:
"Chart Files (*.xlc)|*.xlc|Worksheet Files (*.xls)|*.xls|Data Files (*.xlc;*.xls)|*.xlc; *.xls|All Files (*.*)|*.*||";
pParentWnd 为父窗口指针。
创建文件对话框可以使用DoModal(),在返回后可以利用下面的函数得到用户选择:
CString CFileDialog::GetPathName( ) //得到完整的文件名,包括目录名和扩展名如:c: est est1.txt
CString CFileDialog::GetFileName( ) //得到完整的文件名,包括扩展名如:test1.txt
CString CFileDialog::GetExtName( ) //得到完整的文件扩展名,如:txt
CString CFileDialog::GetFileTitle ( ) //得到完整的文件名,不包括目录名和扩展名如:test1
POSITION CFileDialog::GetStartPosition( ) //对于选择了多个文件的情况得到第一个文件位置。
CString CFileDialog::GetNextPathName( POSITION& pos ) //对于选择了多个文件的情况得到下一个文件位置,并同时返回当前文件名。
//但必须已经调用过POSITION CFileDialog::GetStartPosition( )来得到最初的POSITION变量。
CFontDialog::CFontDialog( LPLOGFONT lplfInitial = NULL, DWORD dwFlags = CF_EFFECTS | CF_SCREENFONTS, CDC* pdcPrinter = NULL, CWnd* pParentWnd = NULL );
构造一个对象,其中参数lplfInitial指向一个LOGFONG结构.如果该参数设置为NULL表示不设置初始字体。
pdcPrinter指向一个代表打印机设备环境的DC对象,若设置该参数则选择的字体就为打印机所用。
pParentWnd用于指定父窗口。通过调用DoModal()创建对话框,在返回后通过调用以下函数来得到用户选择:
void CFontDialog::GetCurrentFont( LPLOGFONT lplf );
用来获得所选字体的属性。该函数有一个参数,该参数是指向LOGFONT结构的指针,函数将所选字体的各种属性写入这个LOGFONT结构中。
CString CFontDialog::GetFaceName( ) //得到所选字体名字。
int CFontDialog::GetSize( ) //得到所选字体的尺寸(以10个象素为单位)。
COLORREF CFontDialog::GetColor( ) //得到所选字体的颜色。
BOOL CFontDialog::IsStrikeOut( )//是否有删除线
BOOL CFontDialog::IsUnderline( )//是否有下划线
BOOL CFontDialog::IsBold( )//是否为粗体
BOOL CFontDialog::IsItalic( )//是否为斜体
首先通过
CColorDialog::CColorDialog( COLORREF clrInit = 0, DWORD dwFlags = 0, CWnd* pParentWnd = NULL )
通过调用DoModal()创建对话框,在返回后调用
COLORREF CColorDialog::GetColor( )