2个回答
展开全部
VB如何改变屏幕的分辨率下
′假设现在我们希望将分辨率改成800X600,但是不要改变色板 ,程序如下: ′注:色板指的就是 16色 / 256色 / High Color (16Bit) / True Color (24Bit)
Private Sub Command1_Click() Dim DevM As DEVMODE ′将取得的讯息存放在 DevM
erg& = EnumDisplaySettings(0&, 0&, DevM)
DevM.dmFields = DM_PELSWIDTH Or DM_PELSHEIGHT ′Or DM_BITSPERPELDevM.dmPelsWidth = 800 ′想要设定的屏幕宽度
DevM.dmPelsHeight = 600 ′想要设定的屏幕高度
′我们不更改色板,因为一旦更改色板就必须重新开机~
′DevM.dmBitsPerPel = 32 (could be 8, 16, 32 or even 4) ′此行可用于改变色板
′以下这行指令会暂时更改屏幕的分辨率,是测试性的,不一定成功, ′不过因为没将设定值写到注册表,所以虽然可能更改成功,
′但是一旦重新开机后,会自动恢复成更改前的设定值
erg& = ChangeDisplaySettings(DevM, CDS_TEST)
′上面的指令若成功,而且您想永久性的更改使用者的屏幕分辨率, ′您还必须使用下一行指令,将资料写到注册表
′erg& = ChangeDisplaySettings(DevM, CDS_UPDATEREGISTRY) ′但是如果您只是想暂时更改使用者的屏幕分辨率,就不需要了.
′当然并不是您随便设定一个值,就一定会成功的更改屏幕分辨率, ′所以还需要检查是否更改成功~下面的程序就是检查是否更改成功 Select Case erg&
Case DISP_CHANGE_RESTART
′通常如果有更改到色板,或者较老的板子,会要求重新开机
an = MsgBox("您必须重新开机~", vbYesNo + vbSystemModal, "讯息") If an = vbYes Then
erg& = ExitWindowsEx(EWX_REBOOT, 0&) End If
Case DISP_CHANGE_SUCCESSFUL
′假设现在我们希望将分辨率改成800X600,但是不要改变色板 ,程序如下: ′注:色板指的就是 16色 / 256色 / High Color (16Bit) / True Color (24Bit)
Private Sub Command1_Click() Dim DevM As DEVMODE ′将取得的讯息存放在 DevM
erg& = EnumDisplaySettings(0&, 0&, DevM)
DevM.dmFields = DM_PELSWIDTH Or DM_PELSHEIGHT ′Or DM_BITSPERPELDevM.dmPelsWidth = 800 ′想要设定的屏幕宽度
DevM.dmPelsHeight = 600 ′想要设定的屏幕高度
′我们不更改色板,因为一旦更改色板就必须重新开机~
′DevM.dmBitsPerPel = 32 (could be 8, 16, 32 or even 4) ′此行可用于改变色板
′以下这行指令会暂时更改屏幕的分辨率,是测试性的,不一定成功, ′不过因为没将设定值写到注册表,所以虽然可能更改成功,
′但是一旦重新开机后,会自动恢复成更改前的设定值
erg& = ChangeDisplaySettings(DevM, CDS_TEST)
′上面的指令若成功,而且您想永久性的更改使用者的屏幕分辨率, ′您还必须使用下一行指令,将资料写到注册表
′erg& = ChangeDisplaySettings(DevM, CDS_UPDATEREGISTRY) ′但是如果您只是想暂时更改使用者的屏幕分辨率,就不需要了.
′当然并不是您随便设定一个值,就一定会成功的更改屏幕分辨率, ′所以还需要检查是否更改成功~下面的程序就是检查是否更改成功 Select Case erg&
Case DISP_CHANGE_RESTART
′通常如果有更改到色板,或者较老的板子,会要求重新开机
an = MsgBox("您必须重新开机~", vbYesNo + vbSystemModal, "讯息") If an = vbYes Then
erg& = ExitWindowsEx(EWX_REBOOT, 0&) End If
Case DISP_CHANGE_SUCCESSFUL
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询