📄 21649.html
字号:
<html> <head> <title>Re: 如何写一个与萤幕解析度无关的程式!</title> </head> <body bgcolor="#FFFFFF" vlink="#808080"> <center> <h1>Re: 如何写一个与萤幕解析度无关的程式!</h1> </center><hr size=7 width=75%><hr size=7 width=75%><p>Posted by <a href="mailto:janyeh@mail.cgu.edu.tw">Jan Yeh</a> on November 27, 1999 at 02:26:27:<p>In Reply to: <a href="21639.html">如何写一个与萤幕解析度无关的程式!</a> posted by Roger on November 26, 1999 at 19:41:11:<p>小弟觉得至少有三个作法,一个是把FORM以640*480的大小做好之后,配合萤幕解析度调整FORM的位置即可:另一个方式是在FORM里面的控制项都依照解析度大小来调整大小或位置(可参阅CWW网页,记得有范例说...http://www.hosp.ncku.edu.tw/~cww/htm21.htm);也可以在程式开始就把解析度调到你预设的解析度,执行完毕在调回来。<p>取得解析度<br> x = Screen.Width \ Screen.TwipsPerPixelX<br> y = Screen.Height \ Screen.TwipsPerPixelY<p>设定解析度<br><以下的程式码似乎是转载自CWW的网页?!忘记了... :><br>原则上,只改这一次,下一次开机会还原,但如果需重开机,才会Update<br>Registry中的设定,并重开机。<br>如果要永久设定其设定值,请将<br>b = ChangeDisplaySettings(DevM, 0) 改成<br>b = ChangeDisplaySettings(DevM, CDS_UPDATEREGISTRY)<br>----程式开始-----<br>Option Explicit<br>Private Declare Function EnumDisplaySettings Lib "user32" Alias _<br> "EnumDisplaySettingsA" (ByVal lpszDeviceName As Long, _<br> ByVal iModeNum As Long, lpDevMode As Any) As Long<p>Private Declare Function ChangeDisplaySettings Lib "user32" Alias _<br> "ChangeDisplaySettingsA" (lpDevMode As Any, ByVal dwflags As Long) As Long<br>Private Declare Function ExitWindowsEx Lib "user32" (ByVal uFlags As Long, _<br> ByVal dwReserved As Long) As Long<p>Const EWX_REBOOT = 2 ' 重开机<br>Const CCDEVICENAME = 32<br>Const CCFORMNAME = 32<br>Const DM_PELSWIDTH = &H80000<br>Const DM_PELSHEIGHT = &H100000<p>Const DISP_CHANGE_SUCCESSFUL = 0<br>Const DISP_CHANGE_RESTART = 1<br>Const CDS_UPDATEREGISTRY = 1<p>Private Type DEVMODE<br> dmDeviceName As String * CCDEVICENAME<br> dmSpecVersion As Integer<br> dmDriverVersion As Integer<br> dmSize As Integer<br> dmDriverExtra As Integer<p> dmFields As Long<br> dmOrientation As Integer<br> dmPaperSize As Integer<br> dmPaperLength As Integer<br> dmPaperWidth As Integer<br> dmScale As Integer<br> dmCopies As Integer<br> dmDefaultSource As Integer<br> dmPrintQuality As Integer<br> dmColor As Integer<br> dmDuplex As Integer<br> dmYResolution As Integer<br> dmTTOption As Integer<br> dmCollate As Integer<p> dmFormName As String * CCFORMNAME<br> dmUnusedPadding As Integer<br> dmBitsPerPel As Integer<br> dmPelsWidth As Long<br> dmPelsHeight As Long<br> dmDisplayFlags As Long<br> dmDisplayFrequency As Long<br>End Type<br>Private DevM As DEVMODE<p>Private Sub Command1_Click()<br> Dim i As Long<br> Dim b As Long<br> Dim ans as Long<br> Dim a As Long<p> a = EnumDisplaySettings(0, 0, DevM) 'Initial Setting<p> DevM.dmFields = DM_PELSWIDTH Or DM_PELSHEIGHT<br> DevM.dmPelsWidth = 800 '设定成想要的解析度<br> DevM.dmPelsHeight = 600<br> b = ChangeDisplaySettings(DevM, 0) 'Changed Only this time<br> If b = DISP_CHANGE_RESTART Then<br> ans = MsgBox("要重开机设定才能完成,重开?", vbOKCancel)<br> If ans = 1 Then<br> b = ChangeDisplaySettings(DevM, CDS_UPDATEREGISTRY)<br> 'after this , Will Update in Registry<br> Call ExitWindowsEx(EWX_REBOOT, 0)<br> End If<br> Else<br> If b <> DISP_CHANGE_SUCCESSFUL Then<br> Call MsgBox("设定有误", vbCritical)<br> End If<br> End If<br>End Sub<br><br><hr size=7 width=75%><p><a name="followups">Follow Ups:</a><br><ul><!--insert: 21649--></ul><!--end: 21649--><br><hr size=7 width=75%><p></body></html>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -