CFileDialog问题。异常退出

来源:百度知道 编辑:UC知道 时间:2024/06/27 03:45:07
static char BASED_CODE szFilter[]= "打开文件 (*.*)|*.*||\0";
CFileDialog fileDialog(TRUE,0,0,
OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT, szFilter);

if (IDOK == fileDialog.DoModal())
{
CString strFileName;
strFileName = fileDialog.GetPathName();
}
就这样一段代码,第一次我打开一个文件(随便什么文件),第二次我在弹出这个文件保存对话框,把鼠标移到一个文件上停留片刻,程序就会马上退出。有人遇到过这种问题吗?怎么解决??
我没写保存。只有这个。跟踪了堆栈,是调用shell32.dll的时候出错,我怀疑是微软的问题,我这里人和我一样的情况,但是把原码发给其他人是没问题的。。所以又怀疑是不是和机器上某些软件有冲突..我也说过我这里有位朋友同样的代码也是没问题的,所以我想会不会和机器有关系,或者和某些软件冲突。

麻烦给出一个解决方案啊!谢谢了
不过我自己加了AfxOleInit()问题已经解决,但是我不知道这个的原理

打开文件没问题,应该是保存的时候出的错,你可以把保存文件的对话框打开的代码贴出来看看。

在我这边运行是没问题的,会不会是其它代码的问题?

可以试着新建一个新的对话框,里面就只放这段代码看看是不是其它代码的影响

新建一个对话框一试不就知道了

哈哈,这个问题我遇过,我先说一下我的情况,我的环境是VC6,使用是最新的SDK,我在stdafx.h里加入了
#define _WIN32_WINNT 0x0501
因为我想用最新的函数,否则条件编译过不去,问题就出在这个宏定义上,为什么呢?
因为在
CFileDialog::CFileDialog(BOOL bOpenFileDialog,
LPCTSTR lpszDefExt, LPCTSTR lpszFileName, DWORD dwFlags,
LPCTSTR lpszFilter, CWnd* pParentWnd) : CCommonDialog(pParentWnd)
{
memset(&m_ofn, 0, sizeof(m_ofn)); // initialize structure to 0/NULL
m_szFileName[0] = '\0';
m_szFileTitle[0] = '\0';
m_pofnTemp = NULL;

m_bOpenFileDialog = bOpenFileDialog;
m_nIDHelp = bOpenFileDialog ? AFX_IDD_FILEOPEN : AFX_IDD_FILESAVE;

m_ofn.lStructSize = sizeof(m_ofn);
m_ofn.lpstrFile = m_szFileName;
m_ofn.nMaxFile = _countof(m_szFileName);
m_ofn.lpstrDefExt = lpszDefExt;
m_ofn.lpstrFileTitle = (LP