如何正确使用cfiledialog
How to use CFileDialog correctly
本文关键字:cfiledialog 何正确 更新时间:2023-10-16
我正在使用VS2012,定位Windows的SDL应用程序。
我想做以下操作:
- 有一个文件打开对话框
- 有一个文件保存作为对话框
为此,我实施了一些这样的功能:
#include <afxdlgs.h>
/// This function gets a path to save a file to from the user
/// return true if function succeeds, false otherwise
/// param pPath String to save path in
/// param name default file name
/// param extensions default file extensions separated by |
/// "Text File (*.txt)|*.txt|Document File (*.doc)|*.doc|All Files(*.*)|*.*||"
bool Prompt::fileOpen( std::string * pPath, const std::string & defaultName, const std::string & defaultExtension, const std::string & extensions )
{
//return false;
CFileDialog dlg(
true, // true for File Open dialog box
defaultExtension.c_str(), // The default file name extension
defaultName.c_str(), // The default file name
OFN_FILEMUSTEXIST | OFN_NOCHANGEDIR, // bunch of flags http://msdn.microsoft.com/en-us/library/wh5hz49d.aspx
extensions.c_str()
);
auto result = dlg.DoModal();
if(result != IDOK) return false; // failed
pPath->assign(dlg.GetPathName());
return true;
}
现在不幸的是,这会在调试上引起编译问题:使用/MD [D](CRT DLL版本)构建MFC应用程序需要MFC共享DLL版本。请#define _afxdll或不使用/MD [D]
so在配置下&gt;一般&gt;使用MFC我将其设置为"在共享DLL中使用MFC"
现在它编译了,但无法正常工作。
我有一个运行时间异常:
app.exe中的0x51A9A072(MFC110D.DLL)未经处理的异常:0xc0000005:访问违规阅读位置0x00000000。
winmain.cpp行28
if (!pThread->InitInstance())
基本上是pthread是nullptr
请注意,如果我删除
的INCLUCE#include <afxdlgs.h>
和fileopen函数我的应用程序按预期工作。
我不确定如何解决此问题,任何帮助都很好。
听起来您在程序的其余部分中不使用MFC,所以为什么从这里开始呢?您可能应该使用GetOpenFileName
。
问题是,您的winmain-Inialisation没有运行,因为STL具有自己的主要功能。您可以在适当的地方致电Winmain,以设置事件 - 循环和所有其他内容,或者拥有自己的Winmain,如那里所述:http://forums.libsdl.org/viewtopic.php?t=1513&sid==BE1738A196FE7CA5D72EA7A894DDC5B7
相关文章:
- 为不同配置设置MSVC_RUNTIME_LIBRARY的正确方法是什么
- CMake-按正确顺序将项目与C运行时对象文件链接
- C++我的数学有什么问题,为什么我的代码不能正确循环
- 用于访问容器<T>数据成员的正确 API
- 如何使用Luacneneneba API正确读取字符串和表参数
- 如何使用用户输入在C++中正确填充2D数组
- node-gyp 在 macOS 上未正确链接库
- C++从另一个类访问公共静态向量的正确方法是什么
- 如何在 C 中正确使用 libiconv 使其不会报告"Arg list too long"?
- 为什么我的for循环不能正确获取argv
- 如何取消对nullptr的屏蔽,返回正确的对象
- AES加密到解密未正确输出
- 使用C++程序合并排序没有得到正确的输出
- 在 c++ 中拥有一组结构的正确方法是什么?
- 函数何时会在c++中包含stack_Unwind_Resume调用
- 使用2个键的cpp-stl::优先级队列排序不正确
- VSCode-有一个红色下划线,但程序构建和运行正确,并且出现配音错误
- 在'如果'陈述输出如何正确
- 具有OFN_ALLOWMULTISELECT不正确的快捷方式结果的 CFileDialog
- 如何正确使用cfiledialog