Windows编程,关于GetSaveFileName与GetOpenFileName函数用法

前面都设置好了,也从百度上找了好多样本,但是这两个函数的返回值始终是0,救命啊
代码如下:
BOOL SaveFigures(HWND hWnd)
{
static TCHAR szFileFilter[] = TEXT("All Files (*.*)\0*.*\0\0");

TCHAR         szFileName[MAX_PATH], szFileTitle[MAX_PATH];
OPENFILENAME  ofn;
static HANDLE         hFile;

    //初始化结构变量 ofn
ZeroMemory(&ofn, sizeof(OPENFILENAME));
ofn.lStructSize = sizeof(ofn);
ofn.hwndOwner = hWnd;
ofn.hInstance = NULL;
ofn.lpstrFilter = szFileFilter;
ofn.lpstrCustomFilter = NULL;
ofn.nMaxCustFilter = 0;
ofn.nFilterIndex = 0;
ofn.lpstrFile = NULL;     //调用 GetOpenFileName 函数前设置        
ofn.nMaxFile = MAX_PATH;
ofn.lpstrFileTitle = NULL;     //调用 GetOpenFileName 函数前设置
ofn.nMaxFileTitle = MAX_PATH;
ofn.lpstrInitialDir = NULL;
ofn.lpstrTitle = NULL;
ofn.Flags = 0;        //调用 GetOpenFileName 函数前设置
ofn.nFileOffset = 0;
ofn.nFileExtension = 0;
ofn.lpstrDefExt = TEXT("txt");
ofn.lCustData = 0L;
ofn.lpfnHook = NULL;

ofn.lpstrFile = szFileName;
ofn.lpstrFileTitle = szFileTitle;
ofn.Flags = OFN_HIDEREADONLY | OFN_CREATEPROMPT;
if (GetSaveFileName(&ofn))
{
    if (szFileTitle[0])
    {
        hFile = CreateFile(szFileName, GENERIC_WRITE, 0,
            NULL, CREATE_ALWAYS, 0, NULL);
        if ((DWORD)hFile != -1)
        {
            DWORD dwWriten = 0;
            WriteFile(hFile, &gLineCount, sizeof(UINT), &dwWriten, NULL);
            WriteFile(hFile, &gLines, gLineCount * sizeof(MYLINE), &dwWriten, NULL);
            WriteFile(hFile, &gRectCount, sizeof(UINT), &dwWriten, NULL);
            WriteFile(hFile, &gRects, gRectCount * sizeof(MYRECT), &dwWriten, NULL);
            WriteFile(hFile, &gEllipseCount, sizeof(UINT), &dwWriten, NULL);
            WriteFile(hFile, &gEllipses, gEllipseCount * sizeof(MYELLIPSE), &dwWriten, NULL);
            CloseHandle(hFile);
        }
        else
        {
            MessageBox(hWnd, TEXT("打开指定文件操作失败"),
                TEXT("文件操作演示程序"), MB_OK | MB_ICONERROR);
        }
    }
}
return TRUE;

}

if (GetSaveFileName(&ofn) == IDOK)