WEB开发网
开发学院软件开发VC 在VC6中实现OFN_EXPLORER风格的文件对话框 阅读

在VC6中实现OFN_EXPLORER风格的文件对话框

 2009-02-27 20:03:07 来源:WEB开发网   
核心提示: 这里人为地设置成了新OPENFILENAME结构的长度,按照这个思路,在VC6中实现OFN_EXPLORER风格的文件对话框(4),可以在使用CFileDialog类的代码处,通过改进,在构造函数中增加上面的处理,这样既能实现相同的功能,实现设计目的, 先指定OFN_EXPLORER风格

这里人为地设置成了新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派生出新类,在构造函数中增加上面的处理,这样既能实现相同的功能,而且使用更为方便。

上一页  1 2 3 4 

Tags:VC 实现 OFN

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接