标签: cfiledialog

为什么CFileDialog :: GetNextPathName在文件路径很长时不起作用?

使用CFileDialog类,我选择放置在具有长路径的目录中的多个文件.当我只选择一个或两个文件时,它没关系; 但是当我同时选择三个文件时,它只返回第三个文件路径的一部分.(看起来它可能限制为512个字符)我该如何解决这个问题?

c++ winapi mfc path cfiledialog

6
推荐指数
1
解决办法
1581
查看次数

CFileDialog :: OnInitDialog()不会调用

我正在使用自动扩展的自定义文件对话框CFileDialog.问题是,OninitDialog()之前没有被调用过DoModal().

我已经定制CFileDialogOninitDialog().

我正在使用VS 2012与Win7操作系统.

我找不到,出了什么问题.

windows mfc visual-c++ cfiledialog

5
推荐指数
1
解决办法
1850
查看次数

初始目录不适用于CFileDialog

我正在使用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)

c++ mfc cfiledialog

5
推荐指数
3
解决办法
5210
查看次数

CFileDialog实例化的问题

我正在遵循这个定义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)

c++ mfc cfiledialog

4
推荐指数
1
解决办法
1558
查看次数

具有 OFN_ALLOWMULTISELECT 的 CFileDialog 快捷方式结果不正确

有人可以让我知道我在这里做错了什么吗?

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)

第二条路是错误的!

c++ winapi mfc cfiledialog

4
推荐指数
1
解决办法
1146
查看次数

标签 统计

cfiledialog ×5

mfc ×5

c++ ×4

winapi ×2

path ×1

visual-c++ ×1

windows ×1