#42002/6/7 23:10:43
给你转篇文章,来自AW爱好者论坛的schzh
分辨率设置的详细介绍
因为不能要求用户保持跟我们一样的分辨率,这就会导致我们的画面或者不能全部显示,或者只能在屏幕上占一小块,只有保持始终全屏才是最美观的。方法有二:
1、设为全屏,然后动态更改每一个显示为屏幕大小,这样烦琐而且耗时,导致程序运行慢;
2、在程序起始记录分辨率,更改用户分辨率为设定值,程序结束自动恢复原设置,这种方法我认为最可行。
方法2大部分问题前面已讨论过,还需要解决以下问题:
1、分辨率的四个参数中,screenwidth,screenheight,screendepth为 Authorware变量,直接记录即可,但刷新频率没有,而且1024x768x32x85被更改为800x600x32时刷新频率被更改为60Hz,必须要改回,若用函数强行设为85,一是与原来不符,二是有些显示器根本达不到,可能就失败了;
2、初始时如果用户分辨率不能达到要求设置,则设置失败,应该给用户一个交代:“你的显示器太老了,没法用,画面不能全部显示或颜色特别难看不要赖我哦!花钱换个吧!”,对不对?
3、必须拦截Alt+F4,否则最后的恢复程序不能执行,不能恢复用户界面,人家会说:“水平太。。。。。。”
解决问题可以用BUDKEY,老张的函数,但都要钱,所以我选用alTools2.0, 完全免费。
我的解决方案如下:
1、用alGetDispSet()检测该机器可能否设置为你的要求(必要时可降低色位和频率),若不能,则提示。。。。。。;
2、起始记录width=screenwidth,height=screenheight,depth=screendepth,至于刷新频率则用alGetCurrentDispSet(),如结果为"1024x768x32x85",则记录frequent=85,字符串的解析大家都会吧;
(刚才有问字符串解析的事,不好意思,我原以为大家都知道的,因为我第一天就先学的这个,现在看来还有必要说说:
result1 := alGetCurrentDispSet() ;获得当前设置
number1 := Rfind("x", result1) ;找到最后一个x
number2 := CharCount(result1) ;字符串长度
frequent := SubStr(result1,number1+1,number2) ;获得分辨率,最后一个x直至结尾)
3、用alChangeRes(宽,高,色,频率) 设置屏幕为你的值;
4、用alHideTaskBar()隐藏任务栏;
5、用InstallAPWKeys()拦截Alt+F4,InstallAPWKeys为ApwKeys.u32的函数;
6、主程序;
7、alChangeRes(width,height,depth,frequent)恢复分辨率;
8、RemoveAPWKeys()恢复Alt键功能;
9、alShowTaskBar()显示任务栏;