写了个画板程序,在实现保存功能的时候,要先初始化一个保存对话框,可是每次都是初始化失败无法打开对话框,代码如下,求解啊。
void PopFileInitialize(HWND hWnd)
{
ofn.lStructSize = sizeof (OPENFILENAME) ;
ofn.hwndOwner = hWnd ;
ofn.hInstance = NULL ;
ofn.lpstrFilter = _T("Painter File\0*.mzk\0All Files\0*.*\0\0");
ofn.lpstrCustomFilter = NULL ;
ofn.nMaxCustFilter = 0 ;
ofn.nFilterIndex = 1 ;
ofn.lpstrFile = NULL ;
ofn.nMaxFile = MAX_PATH ;
ofn.lpstrFileTitle = NULL ;
ofn.nMaxFileTitle = MAX_PATH ;
ofn.lpstrInitialDir = NULL ;
ofn.lpstrTitle = NULL ;
ofn.Flags = 0 ;
ofn.nFileOffset = 0 ;
ofn.nFileExtension = 0 ;
ofn.lpstrDefExt = _T ("mzk") ;
ofn.lCustData = 0 ;
ofn.lpfnHook = NULL ;
ofn.lpTemplateName = NULL ;
ofn.dwReserved = 0;
ofn.FlagsEx = 0;
}
//这里是打开对话框
BOOL PopFileSaveDlg (HWND hwnd, PTSTR pstrFileName, PTSTR pstrTitleName)
{
ofn.hwndOwner = hwnd;
ofn.lpstrFile = pstrFileName;
ofn.lpstrFileTitle = pstrTitleName;
ofn.Flags = OFN_CREATEPROMPT | OFN_HIDEREADONLY;
return GetOpenFileName (&ofn);
}
//这个GetOpenFileName 每次都是返回0,我用CommDlgExtendedError函数测试发现返回的错误信息是
“CDERR_STRUCTSIZE:对应的公共对话框初始化结构旧IStructSize成无效成员。”
不知道为什么啊,大家帮帮忙!!