在VC6中实现OFN_EXPLORER风格的文件对话框
2009-02-27 20:03:07 来源:WEB开发网这里人为地设置成了新OPENFILENAME结构的长度。按照这个思路,可以在使用CFileDialog类的代码处,通过改进,实现设计目的。
先指定OFN_EXPLORER风格创建CFileDialog对象,然后获取和检测操作系统版本,如果是Windows 2000以上,并且是旧结构的长度,就修改成新的长度。之后再运行,就可以得到新风格的文件对话框了。
实现代码如下:
CFileDialog dlg( TRUE, NULL, NULL,
OFN_EXPLORER,
"所有文件 (*.*)|*.*|" );
OSVERSIONINFO vi;
ZeroMemory(&vi, sizeof(OSVERSIONINFO));
vi.dwOSVersionInfoSize = sizeof(OSVERSIONINFO);
::GetVersionEx(&vi);
if (vi.dwPlatformId == VER_PLATFORM_WIN32_NT && vi.dwMajorVersion >= 5 &&
sizeof(OPENFILENAME) < 88 && dlg.m_ofn.lStructSize < 88)
{
struct OPENFILENAMEEX
{
void* pvReserved; // 4 bytes
DWORD dwReserved; // 4 bytes
DWORD FlagsEx; // 4 bytes
};
dlg.m_ofn.lStructSize += sizeof(OPENFILENAMEEX);
}
dlg.DoModal();
4 结束语
以上代码使用VC6在Windows 2000和XP操作系统上编译运行通过。
读者也可以从CFileDialog派生出新类,在构造函数中增加上面的处理,这样既能实现相同的功能,而且使用更为方便。
更多精彩
赞助商链接