首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >CFileDialog异常(MFC)

CFileDialog异常(MFC)
EN

Stack Overflow用户
提问于 2011-01-20 17:06:40
回答 3查看 3.4K关注 0票数 0

我的程序中有以下几行C++代码

代码语言:javascript
复制
CFileDialog dialog(true);
 CString strFileName=L"";
 INT_PTR nResult = dialog.DoModal();
 if(nResult == IDOK)
  // Exception spotted here
  // Debug information gives me --> dialog = {CFileDialog hWnd=0x00000000}
  // What's the heck?
  strFileName=dialog.GetFolderPath();

问题是:当我在运行Windows XP的PC上执行程序时,总是有一个丑陋的异常,我不知道为什么会发生这种情况。但当我把它复制到另一台运行Windows7的电脑上时,一切都没问题。

我已经绝望了。你们能告诉我为什么吗?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2011-01-20 17:24:34

你需要打电话给

DWORD WINAPI CommDlgExtendedError(void);

在实例化CFileDialog之后,检查它是否被实例化,如果没有,为什么没有。

编辑:

在对话框关闭后不能调用GetFolderPath,这是在DoModal()返回时调用的。在有关如何传递缓冲区以保存文件名的备注中,可以查看此MSDN page

票数 3
EN

Stack Overflow用户

发布于 2012-11-22 05:56:39

在Window7机器上构建和部署到XP的乐趣。

如果您跟踪MFC代码:

::GetVersion()被调用并执行Windows Visa及更高版本的各种不同代码。也就是说,它的行为方式不同。

因此,这意味着如果您在DoModal之后调用WIN7中的GetPathName、GetFileName或GetFolderPath,它的工作方式与您预期的一样(如Java)。对于Windows XP,如果不正确,软件就会崩溃。

票数 2
EN

Stack Overflow用户

发布于 2015-03-10 18:08:04

我不能在XP上使用GetFolderPath,但是GetPathName还可以。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4745184

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档