none
自定义壳的分辨率设置问题 RRS feed

  • 问题

  • 我的C#开发的应用程序A.EXE,在XP下调试正常,将其做成自定义壳后,出现不能设置分辨率的问题。具体情况是:
    问题一、我在A.EXE的form_Load()过程中使用了.setResolution()方法进行分辨率的设置,在XP下运行正常,但是在自定义壳后,调用该方法却没有效果,XPE启动后的分辨率始终是800X600。只有在form_Load()过程完成之后再调用.setResolution()方法才有效果,问题出在哪里呢?
    问题二、虽然我在form_Load()过程完成之后再调用.setResolution()方法能有效果,但是在XPE重启后,分辨率仍然是800X600,也就是说我之前的分辨率设置的效果不能保存。这又是什么问题呢?另外,如果程序A.EXE不做成自定义壳,而是作为普通的应用程序在XPE下运行,则分辨率设置后的效果不能保存的问题就不存在了,为什么呢?
    我使用的TD版本是:2.0.1500.0。
    我才开始接触、使用自定义壳,这些问题百思不得其解,望高手能给我指点些迷津,谢谢!
    2009年7月8日 13:14

答案

  • 只有在form_Load()过程完成之后再调用.setResolution()方法才有效果,问题出在哪里呢?
    作为shell的时候,程序加载比较“快”


    根据你的说明我很难判断是哪里出现的问题。这里面列举一下可能的:
    1 缺少你程序使用的组件,(找个XP英文版测试一下你的程序这样可以确定)
    2 你没有安装显示卡的驱动
    3 你使用DVI或者HDMI连接显示设备,这样在显示卡的加载驱动后会自动调整分辨率。

    希望对你有帮助。
    2009年7月12日 11:42
    版主
  • 另外 如果你添加了 Device: Display 这个组件 那么默认的分辨率就是 800X600
    在这个组件中你可以设置屏幕分辨率。
    • 已建议为答案 happymyModerator 2009年7月13日 5:32
    • 已标记为答案 JSHZP 2009年8月20日 8:38
    • 取消答案标记 JSHZP 2009年8月20日 8:38
    • 已标记为答案 JSHZP 2009年8月20日 8:43
    2009年7月13日 5:31
    版主

全部回复

  • 只有在form_Load()过程完成之后再调用.setResolution()方法才有效果,问题出在哪里呢?
    作为shell的时候,程序加载比较“快”


    根据你的说明我很难判断是哪里出现的问题。这里面列举一下可能的:
    1 缺少你程序使用的组件,(找个XP英文版测试一下你的程序这样可以确定)
    2 你没有安装显示卡的驱动
    3 你使用DVI或者HDMI连接显示设备,这样在显示卡的加载驱动后会自动调整分辨率。

    希望对你有帮助。
    2009年7月12日 11:42
    版主
  • 谢谢happymy的帮助,我现在采用了个笨办法临时对付,form_Load()结束前启动10秒钟的Timer定时,定时到后再调用.setResolution()方法,这样可以达到分辨率设置效果。根据这一实验结果我认为应该能排除可能性1、2。另外,我的显示设备是液晶电视机,分别使用过VGA和HDMI连接,都存在问题一的现象。

    2009年7月13日 2:21
  • 另外 如果你添加了 Device: Display 这个组件 那么默认的分辨率就是 800X600
    在这个组件中你可以设置屏幕分辨率。
    • 已建议为答案 happymyModerator 2009年7月13日 5:32
    • 已标记为答案 JSHZP 2009年8月20日 8:38
    • 取消答案标记 JSHZP 2009年8月20日 8:38
    • 已标记为答案 JSHZP 2009年8月20日 8:43
    2009年7月13日 5:31
    版主
  • 我现在采取的办法是:在壳启动后大约十多秒钟,再去设置分辨率。分析原因:可能是当程序作为壳会启动得较早,以至于.setResolution()方法所需的系统组件都还没来得及启动并可用。
    2009年8月20日 8:43