读书人

使用GetOpenFileName()时遇到的有关问

发布时间: 2012-03-24 14:00:46 作者: rapoo

使用GetOpenFileName()时遇到的问题!! 在线等
我在使用GetOpenFileName()后,我定义的部分变量值也改变了!!!!

具体的,我是在类内部这样定义一个打开/保存对话框:

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 );

//执行过上面后类内变量的值就改变了!!!
}


这是我第二次在一个工程中使用这个函数,我第一次用时都很正常

请问这是为什么啊

[解决办法]
//执行过上面后类内变量的值就改变了!!!
ofn变了?

Syntax

BOOL GetOpenFileName( LPOPENFILENAME lpofn
);
Parameters

lpofn
[in, out] Pointer to an OPENFILENAME structure that contains information used to initialize the dialog box. When GetOpenFileName returns, this structure contains information about the user 's file selection.

参数即是in又是out,改变了很正常
[解决办法]
lpofn
[in, out] Pointer to an OPENFILENAME structure that contains information used to initialize the dialog box.

注意这句:
When GetOpenFileName returns, this structure contains information about the user 's file selection.

读书人网 >C++

热点推荐