Windows API一日一练(92)GetOpenFileName函数

时间:2022-01-22 19:36:47
当用户想选择打开以前保存的文件时,就需要使用到选择文件对话框。其实在 Windows API 里已经有这样完美的对话,只需要简单的调用,就可以使用了,而不需要写一大堆其它的代码。下面就来演示一下怎么使用文件选择对话框。
 
函数 GetOpenFileName 声明如下:
 
WINCOMMDLGAPI BOOL APIENTRY GetOpenFileNameA(LPOPENFILENAMEA);
WINCOMMDLGAPI BOOL APIENTRY GetOpenFileNameW(LPOPENFILENAMEW);
#ifdef UNICODE
#define GetOpenFileName GetOpenFileNameW
#else
#define GetOpenFileName GetOpenFileNameA
#endif // !UNICODE
 
LPOPENFILENAMEA 是指向文件选择对话框的结构。
 
调用函数的例子如下:
#001 // 获取用户选择的文件名称。      
#002  // 蔡军生  2007/12/21 QQ:9073204 深圳
#003  void TestGetOpenFileName(void)
#004  {
#005         //
#006         OPENFILENAME ofn;       // 公共对话框结构。
#007         TCHAR szFile[MAX_PATH]; // 保存获取文件名称的缓冲区。           
#008        
#009         // 初始化选择文件对话框。
#010         ZeroMemory(&ofn, sizeof(ofn));
#011         ofn.lStructSize = sizeof(ofn);
#012         ofn.hwndOwner = m_hWnd;
#013         ofn.lpstrFile = szFile;
#014         //
#015         //
#016         ofn.lpstrFile[0] = _T('/0');
#017         ofn.nMaxFile = sizeof(szFile);
#018         ofn.lpstrFilter = _T("All/0*.*/0Text/0*.TXT/0");
#019         ofn.nFilterIndex = 1;
#020         ofn.lpstrFileTitle = NULL;
#021         ofn.nMaxFileTitle = 0;
#022         ofn.lpstrInitialDir = NULL;
#023         ofn.Flags = OFN_PATHMUSTEXIST | OFN_FILEMUSTEXIST;
#024 
#025         // 显示打开选择文件对话框。
#026         if ( GetOpenFileName(&ofn) )
#027         {
#028               // 显示选择的文件。
#029               OutputDebugString(szFile);
#030               OutputDebugString(_T("/r/n"));
#031 
#032         }
#033  }