我只是想知道哪个过滤器用户选择。
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);
}
}
打开文件资源管理器并将路径保存到第二个参数是一个简单的代码。 filter是.vtx,但我尝试添加更多。然后我想要用户选择哪个过滤器。 有一个好方法吗?谢谢
答案 0 :(得分:7)
OPENFILENAME
结构包含字段nFilterIndex
。当用户与对话框交互时,此字段将更新。文档的相关部分:
当用户选择文件时,nFilterIndex返回当前显示的过滤器的索引。
如果您希望在发生更改时(即显示对话框时)了解更改,您必须设置挂钩程序并处理CDN_TYPECHANGE
通知。