在开发项目中,回归测试,发现没有改动的模块中的CFileDialog对象初始化后就会导致程序异常或宕机。
经过查资料和实践,发现CFileDialog 为何抛出异常与一个MFC的宏定义有关,
如果_WIN32_WINNT 0x0500 这个宏被定义那么就不能再用cfiledialg 了,
把这个宏定义去掉则OK
如果程序中确实需要这个宏,可以通过下面几个方案来解决:
1.不要使用CFileDialog,而是使用GetOpenFileName来实现
2.在stdafx.h中,你肯定已经添加了#define _WIN32_WINNT 0x0500,那么,在 #include <afxwin.h>的后面添加下面这句:#undef _WIN32_WINNT,即可
3.用new来分配堆栈内存,形式如下:
CFileDialog* fDlg=new CFileDialog(
TRUE,NULL,NULL,OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT,
"皮肤(.ski)|*.ski||",NULL);
if (fDlg->DoModal()==IDOK)
{
}
delete [] fDlg;
4.在app的InitInstance()函数中加入com组件的初始化AfxOleInit();
转载自:http://www.cnblogs.com/zhangqingping/archive/2009/05/06/1450458.html
相关推荐
CFileDialog_CFiledialog_tearspyg_Vc_源码.zip
CFileDialog的用法和简介 MFC中使用CFile 类和CFileDialog 可以很简单的载入和保存文件
增强型的CFileDlgEx文件对话框,可以替代CFileDialog,加入了显示图片、图标、TAB标签的功能,扩展了Windows系统标准对话框的功能
增强CFileDialog的功能,为它加一个预览窗格,以便在选中ASCII文件时能看到所选文件的内容。
CFileDialog 子类化英文显示, CFileDialog对话框中的文字进行修改
MFC using CFileDialog & listbox multiselect.
CFileDialog的继承类,可以实现文件夹对话框的选择
自定义CFileDialog,增加窗格,增强CFileDialog的功能。
用CFileDialog打开多个文件用CFileDialog打开多个文件用CFileDialog打开多个文件用CFileDialog打开多个文件
clistview类 CFileDialog类 C++超级链接,Visual Studio 2005
这个例子能够在CFileDialog中增加一对按纽,需要使用Visual C++ 6.
弹出窗口获取文件,可以选中对应的文件,获取路径。
资源中的源程序实现了VC++中CFileDialog文件对话框的使用、指定打开路径、打开文件等功能,具有指导性意义。
visual c++自定义文件打开对话框 在VC中定制CFileDialog打开对话框 在VC++中定制CFileDialog.zip
实现了MFC中的通用对话框CFileDialog与其他控件的组合使用,使得文件对话框有更大的灵活性
MFC为我们提供了OFileDialog的简单易用,但毕竟“千篇一律,没有性格”,实际应用中往往需要具有个性特色的用户界面和个性化的文件对话框。要定制文件对话框,就必须获得对文件对话框中各个控件的控制。...
MFC 打开对话框,查找文件,并进行排序,输出到列表。
这个工程用VS2008生成,实现了对文件对话框(CFileDialog)类的派生,可以在自己的文件对话框中加入自己想要的控件,并可定位原文件对话框位置(用ID为stc32的控件定位). 这样就可以方便地实现文件预览:比如文件预览,文本...
派生CFileDialog,使之不仅可选择文件,还可选择目录
一个定制CFileDialog对话框的实例,是用VC实现的,欢迎大家下载