Windows2000新型Open对话框的使用,Windows2000新型Open对话框的使用
【 tulaoshi.com - C语言心得技巧 】
Windows2000新型Open对话框的使用
编译/zxn
(本文来源于图老师网站,更多请访问http://www.tulaoshi.com) 问题的提出:我刚刚在几台机器上安装了Windows® 2000,不知道如何在MFC应用中打开具有新的Outlook风格栏目的Open对话框(见图一)。
(本文来源于图老师网站,更多请访问http://www.tulaoshi.com)
图一 新的 Open 对话框
typedef struct tagOFN { DWORD lStructSize; // 很重要!•••// as you''ve always known and loved it#if (_WIN32_WINNT = 0x0500) void* pvReserved; DWORD dwReserved; DWORD FlagsEx;#endif // (_WIN32_WINNT = 0x0500)} OPENFILENAME, *LPOPENFILENAME;Windows 2000是Windows的第5个版本,用16进制表示是0x500。如果你用_WIN32_WINNT = 0x0500编译程序,OPENFILENAME就会得到3个新成员。前两个是保留的,第三个标志域 是 FlagsEx,有一个新的OFN_EX_NOPLACESBAR标志,它屏蔽了Places栏目。Windows——或者更准确的说,commdlg.dll——使用OPENFILENAME第一个成员lStructSize来决定显示那个对话框,根据微软的说法:如果lStructSize是76(旧的大小),Windows就运行旧的对话框。如果是76+3x4=88(新的大小),它就运行新的对话框。但在实际的研究中,会发现不完全是这么回事。
class CFileDialog : public CCommonDialog { OPENFILENAME m_ofn;•••};这个结构的大小是当编译MFC42.DLL时OPENFILENAME的大小;换句话说,旧的大小。而且,如果你正在进行一个静态连接,MFC代码在MFC42.DLL或NAFXCW.LIB里是被冻结的,你不能仅仅设置m_ofn.lStructSize为新的大小,因为CFileDialog除m_ofn外还有其它数据成员,它们将被新的OPENFILENAME的成员覆盖。
来源:http://www.tulaoshi.com/n/20160129/1483503.html
看过《Windows2000新型Open对话框的使用》的人还看了以下文章 更多>>