问题描述
调用GetOpenFileName获取文件路径时,直接关闭GetOpenFileName打开的对话框后,再次执行GetOpenFileName后不显示选择文件对话框,使用GetLastError返回0,之后无论怎样都不显示选择文件对话框。除非重启程序;执行代码如下
OPENFILENAME ofn; // 公共对话框结构。
TCHAR szFile[MAX_PATH]; // 保存获取文件名称的缓冲区。
// 初始化选择文件对话框。
ZeroMemory(&ofn, sizeof(OPENFILENAME));
ofn.lStructSize = sizeof(OPENFILENAME);
ofn.hwndOwner = NULL;
ofn.lpstrFile = szFile;
ofn.lpstrFile[0] = '\0';
ofn.nMaxFile = sizeof(szFile);
ofn.lpstrFilter = "All(*.*)\0*.*\0Text(*.txt)\0*.TXT\0\0";
ofn.nFilterIndex = 1;
ofn.lpstrFileTitle = NULL;
ofn.nMaxFileTitle = 0;
ofn.lpstrInitialDir = NULL;
ofn.Flags = OFN_PATHMUSTEXIST | OFN_FILEMUSTEXIST;
//ofn.lpTemplateName = MAKEINTRESOURCE(ID_TEMP_DIALOG);
// 显示打开选择文件对话框。
if ( GetOpenFileName(&ofn) )
{
cout<<szFile<<endl;
}