Win7下GetOpenFileName()的奇怪问题,求高人解答...

[复制链接]
查看11 | 回复1 | 2011-6-16 18:52:21 | 显示全部楼层 |阅读模式
使用GetOpenFileName选取文件时,filter设置的是L"Executable File (*.exe;*.EXE)\0*.exe;*.EXE\0",即只保留exe文件。在XP下是没有问题的,但在WIN7下过滤后显示的文件除了exe文件还有internet shortcut即URL文件,很是奇怪,Win7下有什么特殊设置么?求高人解答...
OPENFILENAME ofn;
WCHAR szFile[MAX_PATH]; // 保存获取文件名称的缓冲区。
memset(szFile,NULL,MAX_PATH*sizeof(TCHAR));
// 初始化选择文件对话框。
ZeroMemory(&ofn, sizeof(ofn));
ofn.lStructSize = sizeof(ofn);
ofn.hwndOwner = hWnd;
ofn.lpstrFile = szFile;
ofn.lpstrFile[0] = _T('\0');
ofn.nMaxFile = sizeof(szFile);
ofn.lpstrFilter = L"Executable File (*.exe;*.EXE)\0*.exe;*.EXE\0";
ofn.nFilterIndex = 1;
ofn.lpstrFileTitle = NULL;
ofn.nMaxFileTitle = 0;
ofn.lpstrInitialDir = NULL;
ofn.Flags = OFN_FILEMUSTEXIST|OFN_PATHMUSTEXIST |OFN_EXPLORER | OFN_HIDEREADONLY;
// 显示打开选择文件对话框。
if (GetOpenFileName(&ofn))
{
。。。。。
}

回复

使用道具 举报

千问 | 2011-6-16 18:52:21 | 显示全部楼层
过滤串的结束符是连续两个 \0 。ofn.lpstrFilter = L"Executable File (*.exe;*.EXE)\0*.exe;*.EXE\0\0"; 请阅读 MSDN 文档关于 OPENFILENAME 结构的 lpstrFilter 域的说明:http://msdn.microsoft.com/en-us/library/ms911906...
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行