使用CFileDialog类,我选择放置在具有长路径的目录中的多个文件.当我只选择一个或两个文件时,它没关系; 但是当我同时选择三个文件时,它只返回第三个文件路径的一部分.(看起来它可能限制为512个字符)我该如何解决这个问题?
我正在使用自动扩展的自定义文件对话框CFileDialog.问题是,OninitDialog()之前没有被调用过DoModal().
我已经定制CFileDialog了OninitDialog().
我正在使用VS 2012与Win7操作系统.
我找不到,出了什么问题.
我正在使用CFileDialog,我已经设置了如下所示的初始路径,如代码所示.它不起作用.如果我弄错了,请纠正我.
CFileDialog* filedlg = new CFileDialog(TRUE,(LPCTSTR)NULL , (LPCTSTR)NULL , OFN_HIDEREADONLY| OFN_ENABLESIZING , (LPCTSTR)NULL , FromHandle (hImgDlg) ,0 , FALSE );
filedlg ->m_ofn.lpstrInitialDir = "C:\\" ;
if ( filedlg ->DoModal() == IDOK )
{
/*** do somthing here *****/
}
Run Code Online (Sandbox Code Playgroud) 我正在遵循这个定义CFileDialog,但VS2013仍然告诉我没有构造函数可用于我传入的参数.
我的代码:
CFile theFile;
char strFilter[] = { "TXT Files (*.txt)|*.txt|All Files (*.*)|*.*||" };
CFileDialog fDlg = CFileDialog(TRUE, ".txt", NULL, 0, strFilter);
Run Code Online (Sandbox Code Playgroud)
结果错误:
1 IntelliSense:没有构造函数实例"CFileDialog :: CFileDialog"匹配参数列表参数类型是:(int,const char [5],int,int,char [46])c:\ Users\Jonathan\Documents\Visual Studio 2013\Projects\SDI\SDI\MainFrm.cpp 131 21 SDI
和CFileDialog构造函数供参考:
explicit CFileDialog(BOOL bOpenFileDialog, // TRUE for FileOpen, FALSE for FileSaveAs
LPCTSTR lpszDefExt = NULL,
LPCTSTR lpszFileName = NULL,
DWORD dwFlags = OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT,
LPCTSTR lpszFilter = NULL,
CWnd* pParentWnd = NULL,
DWORD dwSize = 0,
BOOL bVistaStyle = …Run Code Online (Sandbox Code Playgroud) 有人可以让我知道我在这里做错了什么吗?
MFC 项目,我用来CFileDialog让用户选择多个文件,如下所示:
CFileDialog fd(TRUE, NULL, NULL,
OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT | OFN_EXPLORER | OFN_ALLOWMULTISELECT,
NULL, this);
if(fd.DoModal() == IDOK)
{
//Multi-selection
CString strPaths;
POSITION fileNamesPosition = fd.GetStartPosition();
while(fileNamesPosition != NULL)
{
if(!strPaths.IsEmpty())
strPaths += L"\n";
strPaths += fd.GetNextPathName(fileNamesPosition);
}
AfxMessageBox(strPaths);
}
Run Code Online (Sandbox Code Playgroud)
所以如果说的话,有两个快捷方式文件:
shortcut_1.lnk文件指的是:"D:\Folder\Project_B\Release\Name of Project B.exe"
shortcut_2.lnk这指的是"D:\Folder\Project_A\Release\Name of Project A.exe"
如果我从上面代码生成的“文件打开”对话框中选择它们,我的结果strPaths将变为以下内容,这是不正确的:
D:\Folder\Project_A\Release\Name of Project A.exe
D:\Folder\Project_A\Release\Name of Project B.exe
Run Code Online (Sandbox Code Playgroud)
第二条路是错误的!