马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
另外,小型软件代码重用价值低,没有必要跨平台;大型软件,有严格的规划、部署,不可以随意跨平台。 从WindowsME、Windows2000入手下手,用于GetOpenFileName()和GetSaveFileName()函数的OPENFILENAME布局增加了三个新元素。我们先来看一下:
TypeOPENFILENAME
lStructSizeAsLong
hWndOwnerAsLong
hInstanceAsLong
lpstrFilterAsString
lpstrCustomFilterAsString
nMaxCustFilterAsLong
nFilterIndexAsLong
lpstrFileAsString
nMaxFileAsLong
lpstrFileTitleAsString
nMaxFileTitleAsLong
lpstrInitialDirAsString
lpstrTitleAsString
flagsAsLong
nFileOffsetAsInteger
nFileExtensionAsInteger
lpstrDefExtAsString
lCustDataAsLong
lpfnHookAsLong
lpTemplateNameAsString
#if(_WIN32_WINNT>=0x0500)
pvReservedAsLong
dwReservedAsLong
FlagsExAsLong
#endif//(_WIN32_WINNT>=0x0500)
EndType
关于新的元素pvReserved、dwReserved不丢脸出是保存的,大概WindowsME、Windows2000公布的时分还没有完成相干功效,以是……不外,FlagsEx元素却是有一个可使用的参数OFN_EX_NOPLACESBAR(1)。设置了这个位标志能够封闭Windows2000(或WindowsME)“翻开文件”对话框右边的快速栏。这个快速栏统共能够寄存五个快速体例,能够经由过程修正注册表来指定本人的快速体例。至于怎样修正,不是我们明天的话题,以是临时不会商。可是,在实践利用中,我发明了一个成绩:接纳这类新布局的程序没法在Windows98/95/NT4下面运转。缘故原由多是设置lStructSize时算进了新的三个成员,招致布局长度增添12个字节,而旧版本的ComDlg32.DLL没法识别,误以为布局长度毛病。其终极了局就是“翻开文件”和“保留文件”对话框没法显现。
鉴于这个成绩,我们接纳了以下思绪办理:用GetVersionEx()函数检测Windows版本,假如不是WindowsME、Windows2000,就在用Len()算出OPENFILENAME布局长度以后减往12字节,再赋值给lStructSize。如许,就版本的ComDlg32.DLL就会疏忽新增的三个元素。经理论,证实这类办法可行。
固然,我们还思索到大概有的Windows95/98/NT4因为某些软件的安装而具有新版本的ComDlg32.DLL,如许就完整可使用新的特征了。以是最好的举措仍是检测ComDlg32.DLL自己的版本,再决意OPENFILENAME布局的长度是不是要疏忽新的三个元素的长度。
可怜的程序员,还是逃不出移植的命运! |