由于要用到2000的一些特性,我使用了#define _WIN32_WINNT 0x0500宏定义,但此后当我用到公用对话框时总是在析构函数的地方出现内存为读的错误,当我把宏改成0x0400时就没问题了。(我做过了多次试验,可以确定就是因为这个宏引起的问题)哪位高手指点一下这是为什么?怎么解决,我是说在保持#define _WIN32_WINNT 0x0500的情况下安全使用公用对话框。void CTransParamDlg::OnSaveTxt()
{
TCHAR szFilters[] = _T("Text files(*.txt)| *.txt|All files(*.*)|*.*| |"); CFileDialog dlg(FALSE, _T("txt"), _T("TransList.txt"),
OFN_OVERWRITEPROMPT| OFN_PATHMUSTEXIST| OFN_HIDEREADONLY,
szFilters);
if(dlg.DoModal() == IDOK)
{
TRACE1("filename:%s", dlg.GetPathName());
}
} //<------执行到这里时弹出错误
//错误为:First-chance exception in CDTExTrans.exe (KERNEL32.DLL): 0xC0000005: Access Violation.
{
TCHAR szFilters[] = _T("Text files(*.txt)| *.txt|All files(*.*)|*.*| |"); CFileDialog dlg(FALSE, _T("txt"), _T("TransList.txt"),
OFN_OVERWRITEPROMPT| OFN_PATHMUSTEXIST| OFN_HIDEREADONLY,
szFilters);
if(dlg.DoModal() == IDOK)
{
TRACE1("filename:%s", dlg.GetPathName());
}
} //<------执行到这里时弹出错误
//错误为:First-chance exception in CDTExTrans.exe (KERNEL32.DLL): 0xC0000005: Access Violation.
解决方案 »
- IE加载不了ATL 控件
- bcgcontrolbar中cscrollview类的oninitialupdate函数调用顺序
- CListCtrl FindItem()问题 急等
- 有没有办法尽可能减少DLL的大小?
- 如何将一个工程中的窗体及其相应的 类 加入到另一工程中?
- 关于MFC
- 如何在VC++6.0中用工程Win32 Application 做一个空的应用程序窗口
- 对话框编译问题
- 关于:fatal error C1083: Cannot open precompiled header file
- 如何控制鼠标,用程序控制它自己在屏幕上动。
- 变量
- _RecordsetPtr对象使用完毕之后是否需要显式调用Release()函数?
OFN_OVERWRITEPROMPT| OFN_PATHMUSTEXIST| OFN_HIDEREADONLY,
szFilters,this);
我用您的代码替换了我的,还是有原来的问题
KERNEL32! 77e74a1d() <-------------箭头指向这里时出的问题
CFileDialog::~CFileDialog() + 71 bytes
CTestMagnetButtonDlg::OnButton1() line 221 + 15 bytes
OFN_OVERWRITEPROMPT| OFN_PATHMUSTEXIST| OFN_HIDEREADONLY,
szFilters,this);#if (_WIN32_WINNT >= 0x0500)
dlg.m_ofn.pvReserved = NULL;
dlg.m_ofn.dwReserved = 0;
dlg.m_ofn.FlagsEx = 0;
#endif // (_WIN32_WINNT >= 0x0500)
看http://msdn.microsoft.com/msdnmag/issues/0400/c/c0400.asp
OPENFILENAME ofn;
TCHAR szFile[MAX_PATH];
TCHAR szFilters[]="Event Files (*.evt)\0*.evt\0All Files (*.*)\0*.*\0\0";
memset(szFile,0,MAX_PATH);
memset((LPTSTR)&ofn,0,sizeof(OPENFILENAME));
ofn.lStructSize=sizeof(OPENFILENAME);
ofn.hwndOwner=this->m_hWnd;
ofn.Flags=OFN_HIDEREADONLY|OFN_PATHMUSTEXIST;
ofn.lpstrFilter=(LPTSTR)szFilters;
_tcscpy(szFile,"*.evt");
ofn.lpstrFile=szFile;
ofn.nMaxFile=MAX_PATH;
ofn.lpstrDefExt="evt";
if(GetSaveFileName(&ofn)==0)
。