使用win32 API进行打开文件对话框,使用GetOpenFileName用于返回用户打开的文件名称,后续进行文件读取处理。
但是使用这个函数打开文件过程中总是出现长时间延迟(偶尔会没有延迟,直接就返回文件名了)延迟时间达到了6-8s,已经严重影响了正常使用。代码如下:
OPENFILENAME ofn;
TCHAR szFile[MAX_PATH] = _T("");
ZeroMemory(&ofn, sizeof(ofn));
ofn.lStructSize = sizeof(ofn);
ofn.hwndOwner = hOwer;
ofn.lpstrFilter = "Exe File (*.exe)\0*.exe\0";
ofn.lpstrFile = szFile;
ofn.nMaxFile = MAX_PATH;
ofn.Flags = OFN_EXPLORER;
ofn.lpstrDefExt = "exe";
//如果用户指定了一个文件名且点击OK按钮,返回值为非零值。如果用户取消或关闭Save对话框或错误出现,返回值为零。
if (!GetOpenFileName(&ofn))
return "";
XDebug() << szFile;
试了很多参数,最后得到了解决办法,将ofn.Flags改成这样就好了
ofn.Flags = OFN_EXPLORER | OFN_READONLY;
这样再打开就不会出现延迟的情况了。