我只想知道用户选择了哪个过滤器。
void LoadFilePath(char *_szFilePath, int _nFilePathSize)
{
if( !_szFilePath) return;
if( _nFilePathSize < MAX_PATH ) return;
OPENFILENAME ofn;
char lpstrFile[MAX_PATH] = "";
memset(&ofn, 0 ,sizeof(OPENFILENAME));
ofn.lStructSize = sizeof(OPENFILENAME);
ofn.hwndOwner = NULL;
ofn.lpstrFilter = "VTX File(*.vtx)\0*.vtx\0";
ofn.lpstrFile = lpstrFile;
ofn.lpstrInitialDir = ".\\";
ofn.Flags = OFN_NOCHANGEDIR;
ofn.nMaxFile = MAX_PATH;
if(GetOpenFileName(&ofn) != 0 ){
sprintf(_szFilePath,"%s",ofn.lpstrFile);
}
if(ofn.lpstrFile[0] == 0 )
{
printf("no selected file \n");
system("pause()");
exit(0);
}
}
打开文件资源管理器并将路径保存到第二个参数是简单的代码。 过滤器是 .vtx,但我尝试添加更多。然后我想要用户选择哪个过滤器。 有什么好方法吗?谢谢
最佳答案
OPENFILENAME
结构包含一个字段nFilterIndex
。当用户与对话框交互时,该字段会更新。文档的相关部分:
When the user selects a file, nFilterIndex returns the index of the currently displayed filter.
如果您想在更改发生时得到通知(即在显示对话框时),您必须设置一个 Hook 过程并处理 CDN_TYPECHANGE
通知。
关于c - 是否有任何数据可以保存我在 WINAPI 中选择的过滤器 - OPENFILENAME,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18551021/