作者:刘树伟
使用Win32方式显示打开和保存文件对话框的代码如下:
TCHAR szFilters[256] = _T("LibUIDK Settings File(*.ini)|*.ini||"); // 这是MFC风格的filter,win32用\0代替|,所以下面要转一下。
LPTSTR pch = szFilters; // modify the buffer in place
// MFC delimits with '|' not '\0'
while ((pch = _tcschr(pch, '|')) != NULL)
*pch++ = '\0';
// do not call ReleaseBuffer() since the string contains '\0' characters
TCHAR szFile[256] = {0};
TCHAR szFileTitle[256] = {0};
TCHAR szTitle[256] = {0};
TCHAR szDefExt[256] = _T("ini");
OPENFILENAME Ofn;
memset(&Ofn, 0, sizeof(OPENFILENAME)); // initialize structure to 0/NULL
Ofn.lStructSize = sizeof(OPENFILENAME);
Ofn.lpstrFile= szFile;
Ofn.nMaxFile = 256;
Ofn.lpstrDefExt = szDefExt;
Ofn.lpstrFileTitle = szFileTitle;
Ofn.nMaxFileTitle = 256;
Ofn.hwndOwner = NULL;
Ofn.lpstrFilter = szFilters;
Ofn.lpstrInitialDir = (LPTSTR)NULL;
Ofn.Flags |= OFN_OVERWRITEPROMPT | OFN_ENABLEHOOK | OFN_EXPLORER;
Ofn.lpstrTitle = szTitle;
BOOL bRet = GetOpenFileName(&Ofn); // 如果是保存文件,用GetSaveFileName