查看此帖的完整版本:[转帖][小技巧]保证窗口在不同系统下完整显示阅读 3775 次

作者:dmacro 2004/4/30 9:58:08

[转帖][小技巧]保证窗口在不同系统下完整显示
当我们在win9x下写好的程序,拿到xp下运行时,就会发现程序界面发生了变化,有的部分不能完全显示了,如图

此主题相关图片如下:

这是什么原因呢?原来只是由于xp下的窗口标题栏比9x下的要高一些,而窗口高度又是一定的,所以客户区高度就被缩减了。

看来关键就是调整窗口高度。有人可能会想,这有什么难的?在程序中先判断一下当前操作系统,再根据不同的系统给窗口高度赋不同的值就可以了。想法是好的,但并不完善。因为即使是同一个操作系统,也有不同的风格,标题栏的高度是可以随意更改的。而且从上面的图可以看出,窗口高度=客户区高度+标题栏高度+边框高度,除了标题栏高度可变以外,边框高度也是一个不可忽视的变量。

又有人会想,这也好办,用API获取标题栏高度和边框高度不就行了?这是个好办法,但对于一些初学者来说,API无疑是天书。有没有更简单的办法呢?当然有!请看下面的一段代码

窗口.高度 = 窗口.高度 - 取用户区高度 () + 205

什么意思,对照图片想一想。窗口.高度 - 取用户区高度 () 就把 标题栏高度+边框高度 算出来了,再加上预先算出的用户区高度--205,就是窗口应该显示的高度了。这样一来,无论标题栏高度和边框高度是什么,窗口上的控件都能够完整显示。

改过的代码在98和xp下的效果:

此主题相关图片如下:

作者:青果果 2005/4/28 0:26:03


好资料!!!

多谢分享~~~~~~~~~


分页:[1]