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

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

 2009-02-27 20:03:07 来源:WEB开发网   
核心提示: 在VC2005中,sizeof(OPENFILENAME)已经是新结构的长度了,在VC6中实现OFN_EXPLORER风格的文件对话框(3),并且专门定义了旧结构长度的宏定义OPENFILENAME_SIZE_VERSION_400,m_ofn在CFileDialog类中通过__decl

在VC2005中,sizeof(OPENFILENAME)已经是新结构的长度了,并且专门定义了旧结构长度的宏定义OPENFILENAME_SIZE_VERSION_400。m_ofn在CFileDialog类中通过__declspec(property(get=GetOFN))声明成了“虚数据成员”,并不存在,实际是通过GetOFN函数访问的新申请的m_pOFN空间。

所以,在VC6中,就没有使用支持OFN_EXPLORER风格的Windows 2000以上系统的OPENFILENAME结构,自然就无法显示新的界面了。

3 解决办法

当然最简单的解决办法是换用2005开发。

如果必须使用VC6,在Codejock Xtreme Toolkit Pro软件中,CXTBrowseEdit类ChooseFile函数提供了一个解决的方法:

       // Check to see if this is Windows 2000 or later, if so use the

       // Windows 2000 version of OPENFILENAME.

       if (XTOSVersionInfo()->IsWin2KOrGreater() && sizeof(OPENFILENAME) < 88 && dlg.m_ofn.lStructSize < 88)

       {

              // Windows 2000 version of OPENFILENAME has three extra members,

              // this was copied from newer version of commdlg.h...

              struct OPENFILENAMEEX

              {

                     void*     pvReserved; // 4 bytes

                     DWORD  dwReserved; // 4 bytes

                     DWORD  FlagsEx;    // 4 bytes

              };

              // should equal an additional 12 bytes;

              dlg.m_ofn.lStructSize += sizeof(OPENFILENAMEEX);

       }

上一页  1 2 3 4  下一页

Tags:VC 实现 OFN

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