问题标签 [cfiledialog]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c++ - Initial directory is not working for CFileDialog
I am using CFileDialog, I have set the initial path like below , as shown in the code. It's not working . Correct me if I made a mistake.
c++ - CFileDialog的当前目录在.exe和.dll中不一致
通常,当您使用 CFileDialog 多次打开一个文件时,会保持当前目录。即,每次对话框在前一个对话框结束的目录中打开(如果它没有被取消)。即使您从不同的地方使用不同的 CFileDialog 实例,这也有效。
并且即使在程序重新启动后,之前的目录仍然保持不变。
但在我的应用程序中,这似乎不适用于 DLL:从主 .exe 程序调用的 CFileDialogs 有它们当前的目录,而来自 .dll 的 CFileDialogs 有另一个。它们不相互交互,但在其他方面表现“正常”。
所以我最终得到了两个不一致的当前目录,你必须再次从 DLL 导航到所需的位置。有时您忘记更改目录,从一个目录加载 .exe 中的一些数据,从另一个目录加载 .dll 中的一些其他数据,并得到奇怪的结果。
您知道从 .exe 和 .dll 打开 CFileDialog 时具有相同当前目录的方法吗?
澄清:我不希望对话框总是从同一个目录开始,我希望它们保留最后使用的目录,但在 .exe 和 .dll 中始终如一地这样做。
我的.exe是在VS2003中创建的,.dll是在VS2010中创建的。
(我最初的猜测是您需要在 DLL 的 CFileDialog 构造函数中提供主窗口句柄,但这没有帮助。我的下一个猜测是通过 GetCurrentDirectory() 手动获取当前目录并将其设置为起始位置对于dll的CFileDialog(然后将当前目录设置为它结束的位置)。但这看起来很丑陋,我不确定它是否适用于从WinXP到Win8的所有操作系统,因为根据MSDN,它们对CFileDialog的默认目录有不同的规则.)
mfc - 无法在 Windows XP SP3 的 CFiledialog 中编辑组合框值
我从中FileDialog
派生的客户CFiledialog
。在其中,OnInitDialog()
我将其布局更新为WS_EX_LAYOUTRTL
(对于阿拉伯语),然后将回调方法设置SetChildLayout
为枚举所有子项并将其布局设置为WS_EX_LAYOUTRTL
.
在对话框启动时完成所有这些操作后,我无法访问文件名组合框。它的类型是CComboBoxEx
.
只有在调整自定义对话框的大小后,我才能编辑组合框。
任何想法?
c++ - CFile写入函数
我有一个关于 MFC CFile 写入函数的问题。
我正在学习 MFC 应用程序并停留在这个 Save As and write 功能。当我单击TestButton 时,会弹出一个另存为对话框,提示另存为txt 文件。
问题是如何将两个缓冲区一起写入一个缓冲区, File
然后将其写入DataFile
并在每次写入时创建一个新行?
输出文件被保存,但只有一个缓冲区 (TEST1) 被保存两次,无需换行。
c++ - 在 MFC 中的记事本中打开文本
正如标题所说。如何在 MFC 的记事本中打开文本?
我用CFileDialog
来打开一个“另存为”对话框,如下所示:
在我有路径名之后m_strPathName
,有没有办法直接打开保存在记事本中的txt文件?
我有另一个按钮OnShowData
,这是里面的代码。
ShellExecute(NULL, _T("open"), m_strPathName, NULL, NULL, SW_SHOW);
有没有其他方法可以做到这一点?
问题解决了
c++ - 如果 CFileDialog::GetNextPathName 太长,则返回截断的路径
我正在使用 CFileDialog 打开文件,我允许多项选择,当用户选择多个文件时,我使用 CFileDialog::GetNextPathName 方法对它们进行迭代,但是如果文件名太大,它会返回它被截断我不知道为什么那??
这些文件是使用随机名称生成的,并且文件已成功创建,但是当我尝试使用 CFileDialog 打开它们时,其中一些文件太长了
CFileDialog::GetNextPathName 方法从它的末尾返回一些丢失的字符。我不知道是什么问题!我确定文件的完整路径的长度小于 MAX_PATH
解决方案
我认为缓冲区将包含一个一个接一个的文件名,调用 get next 将用下一个填充它,但我发现所有文件路径都连接起来,用 ' ' 或 '\0' 分隔,具体取决于以下使用的一些标志我很好
c++ - CFileDialog 支持 XP 和 Vista
我的应用程序支持 XP 及更高版本,并且在 Vista 及更高版本下运行时,我尝试使用 CFileDialog 较新的接口(即 GetIFileOpenDialog())(以尊重这些接口的限制)。
因此,我检查了操作系统版本,并在适当的情况下尝试使用这些接口,并使用旧的 XP 方法。问题是在 XP 下运行时会出现 LoadLibrary 失败(代码在 DLL 中),因此似乎有一些早期绑定正在进行。只要我注释掉使用这些接口的代码,LoadLibrary 就会成功。
是否有可能在 XP 下运行使用 Vista 功能的 CFileDialog 代码,即使代码没有被调用?
谢谢
visual-studio-2010 - 错误 C2248:“CObject::operator =”:无法访问在类“CObject”中声明的私有成员
我已经实现了这个 MFC 类。(注意这里写的只是我类的一部分)
这里是文件 FilesWorkFlow.h
这是文件 FilesWorkFlow.cpp
在 InitialJobProject2Dlg.h 文件中,该文件是与我的 Dialog 窗口相关的类的标题,并且是从类 CDialogEx 派生的,我有以下代码:
最后这是文件 FilesWorkFlow.cpp 中的内容
我找不到指定错误的原因?
visual-studio-2010 - 如何调用 CFileDialog 类的构造函数
我需要一个 CFileDialog 对象用于类的所有成员函数。所以我把类的标题写成:
并以这种形式实现了类的构造函数:
但在构造函数中,我得到了错误:
问题是什么?
-------------------------------------------------- -----------------------------------------
问题解决了。我以这种方式实现了这个类。
文件工作流.h
文件工作流.cpp
c++ - 在我的程序中第二次使用 CFileDialog 得到运行时错误 Debug Assertion failed
我用 MFC 开发了一个简单的程序。它负责使用 GDAL 库读取和写入 geotiff 文件。为此,我从CFileDialog
命名类派生了两个类ManageOpenGeoTiffFiles
,ManageSaveGeoTiffFiles
每个类都有 3 个函数来支持读取和写入 geotiff。
这是其中之一的构造函数和析构函数的标头:
这就是我在代码中使用它的方式:
当我在我的程序中第一次 使用Open
or按钮时一切正常,但在第二次使用时出现错误:Save
如果我单击忽略:
此错误发生在以下行:
每个对话框,即使我cancel
第一次单击,在第二次使用对话框时也会发生错误。
dlgFile.cpp第398行如下:
编辑部分:
回答其中一个评论并为其他人提供信息:
当我设置断点时,断言失败时会看到以下结果:
第一次断言不失败时的结果如下: