读书人

使用GetOpenFileName()和GetSaveFileN

发布时间: 2012-03-27 13:44:24 作者: rapoo

使用GetOpenFileName()和GetSaveFileName()的问题
使用完GetOpenFileName()和GetSaveFileName()之后,都有哪些东西值会发生变化啊?

我是在类内部这样定义的一个函数:

BOOL CMapEditor::OpenSaveDialog( int dwFlag )
{
// 设置OPENFILENAME结构
OPENFILENAME ofn ;//
ZeroMemory(&ofn, sizeof(ofn));

static const TCHAR szFilter[] =
TEXT( "Map Files (.txt)\0*.txt;\0 ")TEXT( "All Files (*.*)\0*.*;\0 ");
ofn.lStructSize = sizeof(OPENFILENAME);
ofn.hwndOwner = m_pApp-> GetWindow();
ofn.hInstance = NULL;
ofn.lpstrFilter = szFilter;
ofn.nFilterIndex = 1;
ofn.lpstrCustomFilter = NULL;
ofn.nMaxCustFilter = 0;
ofn.lpstrFile = m_MapFileName;
ofn.nMaxFile = MAX_PATH;
ofn.lpstrFileTitle = NULL;
ofn.nMaxFileTitle = 0;
ofn.lpstrInitialDir = NULL;
if( dwFlag == 0 )//打开文件编辑
ofn.lpstrTitle = TEXT( "选择一个场景文件... ");
else//保存文件
ofn.lpstrTitle = TEXT( "保存为指定的文件... ");
ofn.Flags = OFN_HIDEREADONLY;
ofn.nFileOffset = 0;
ofn.nFileExtension = 0;
ofn.lpstrDefExt = TEXT( "txt ");
ofn.lCustData = 0L;
ofn.lpfnHook = NULL;
ofn.lpTemplateName = NULL;

if( dwFlag == 0 )//打开文件编辑
return GetOpenFileName( &ofn );


else //保存文件
return GetSaveFileName( &ofn );
}

昨天我发现用过它后,竟然改变了我四个类内的private变量的值!而且不论把m_MapFileName的定义移动到哪个位置,它都会改变包括m_MapFileName在内的和在它后面定义的三个变量的值!

很不明白这是为什么?

今天又用时,发现它又改变了我其它的量,具体是哪一个不清楚,但是却让我的LoadImage()函数调用不成功

到底用了我定义的这个函数后都会产生哪些值的变化?

肯请高手指点




[解决办法]
貌似楼主这个问题前两天问过了吧

单步调吧,估计还是你代码的问题
[解决办法]
MSDN
[解决办法]
在之前调用GetCurrentDirectory,之后调用SetCurrentDirectory

读书人网 >C++

热点推荐