我的程序中有以下几行C++代码
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的电脑上时,一切都没问题。
我已经绝望了。你们能告诉我为什么吗?
发布于 2011-01-20 17:24:34
你需要打电话给
DWORD WINAPI CommDlgExtendedError(void);
在实例化CFileDialog之后,检查它是否被实例化,如果没有,为什么没有。
编辑:
在对话框关闭后不能调用GetFolderPath,这是在DoModal()返回时调用的。在有关如何传递缓冲区以保存文件名的备注中,可以查看此MSDN page。
发布于 2012-11-22 05:56:39
在Window7机器上构建和部署到XP的乐趣。
如果您跟踪MFC代码:
::GetVersion()被调用并执行Windows Visa及更高版本的各种不同代码。也就是说,它的行为方式不同。
因此,这意味着如果您在DoModal之后调用WIN7中的GetPathName、GetFileName或GetFolderPath,它的工作方式与您预期的一样(如Java)。对于Windows XP,如果不正确,软件就会崩溃。
发布于 2015-03-10 18:08:04
我不能在XP上使用GetFolderPath,但是GetPathName还可以。
https://stackoverflow.com/questions/4745184
复制相似问题