با سلام
برای تغییر رزولیشن صفحه نمایش در برنامه مثلا 768*1024 چکار باید کرد
Printable View
با سلام
برای تغییر رزولیشن صفحه نمایش در برنامه مثلا 768*1024 چکار باید کرد
سلام.
یه تابع برات نوشتم. رزولیشن مورد نظرتو به صورت طول و عرض به همراه کیفیت رنگ ها و فرکانس مورد نظرت میدی.
کد:Private Declare Function EnumDisplaySettingsA Lib "user32.dll" (ByVal lpszDeviceName As String, ByVal iModeNum As Long, lpDevMode As DEVMODE) As Long
Private Declare Function ChangeDisplaySettingsA Lib "user32.dll" (lpDevMode As Any, ByVal dwFlags As Long) As Long
Private Const ENUM_CURRENT_SETTINGS = -1
Private Const CDS_UPDATEREGISTRY = &H1
Private Const CCHDEVICENAME = 32
Private Const CCHFORMNAME = 32
Private Type DEVMODE
dmDeviceName As String * CCHDEVICENAME
dmSpecVersion As Integer
dmDriverVersion As Integer
dmSize As Integer
dmDriverExtra As Integer
dmFields As Long
dmOrientation As Integer
dmPaperSize As Integer
dmPaperLength As Integer
dmPaperWidth As Integer
dmScale As Integer
dmCopies As Integer
dmDefaultSource As Integer
dmPrintQuality As Integer
dmColor As Integer
dmDuplex As Integer
dmYResolution As Integer
dmTTOption As Integer
dmCollate As Integer
dmFormName As String * CCHFORMNAME
dmUnusedPadding As Integer
dmBitsPerPel As Long
dmPelsWidth As Long
dmPelsHeight As Long
dmDisplayFlags As Long
dmDisplayFrequency As Long
End Type
Private Sub SetDisplaySetting(intWidth As Integer, intHeight As Integer, bytBitsPerPel As Byte, bytFrequency As Byte)
Dim dvmDisplay As DEVMODE
dvmDisplay.dmSize = Len(dvmDisplay)
EnumDisplaySettingsA vbNullString, ENUM_CURRENT_SETTINGS, dvmDisplay
dvmDisplay.dmPelsWidth = intWidth
dvmDisplay.dmPelsHeight = intHeight
dvmDisplay.dmBitsPerPel = bytBitsPerPel
dvmDisplay.dmDisplayFrequency = bytFrequency
ChangeDisplaySettingsA dvmDisplay, CDS_UPDATEREGISTRY
End Sub
Private Sub Form_Load()
SetDisplaySetting 1024, 768, 32, 85
End Sub
با سلامنقل قول:
من که هر کاری کردم رو سیستمم جواب نداد نمی دونم چرا
من اینجا توضیح دادم. البته مال وی بی 2005 هستش.
کد:http://forum.p30world.com/showpost.php?p=1437381&postcount=34
سلام.
کد مشکلی نداره. فقط باید پارامتر ها رو درست ارسال کنی. برای مثال شاید کارت گرافیک شما توانایی نمایش رزولیشن 1024 در 768 رو نداره یا 32 بیت نیست و 16 یا 24 هست که این دو مورد بعید هستن.
احتمال زیاد فرکانس 85 هرتز رو ساپورت نمیکنه. باید کمتر بذاری. یه چیزی که قبول کنه. مثلا 75 یا 70 رو امتحان کن.
برای دیدن فرکانس هایی که رو یه رزولیشن خاص vga ت ساپورت میکنه رزولیشن رو ست کن بعد از طریق display تب setting و کلید advance و تب monitor فرکانس های قابل قبول رو ببین.
سلام خدمت دوستان
با اجازه آقا پیمان
majj جان خوبی عزیز کد زیر رو در ماژول قرار بده./
و کد زیر هم درون فرم خود قرار بدهکد:Public Const CDS_UPDATEREGISTRY = &H1
Public Const CDS_TEST = &H2
Public Const CDS_FULLSCREEN = &H4
Public Const DISP_CHANGE_SUCCESSFUL = 0
Public Const DISP_CHANGE_RESTART = 1
Public Const ENUM_CURRENT_SETTINGS = -1
Public Type DEVMODE
dmDeviceName As String * 32
dmSpecVersion As Integer
dmDriverVersion As Integer
dmSize As Integer
dmDriverExtra As Integer
dmFields As Long
dmOrientation As Integer
dmPaperSize As Integer
dmPaperLength As Integer
dmPaperWidth As Integer
dmScale As Integer
dmCopies As Integer
dmDefaultSource As Integer
dmPrintQuality As Integer
dmColor As Integer
dmDuplex As Integer
dmYResolution As Integer
dmTTOption As Integer
dmCollate As Integer
dmFormName As String * 32
dmUnusedPadding As Integer
dmBitsPerPixel As Integer
dmPelsWidth As Long
dmPelsHeight As Long
dmDisplayFlags As Long
dmDisplayFrequency As Long
End Type
Public Declare Function EnumDisplaySettings Lib "user32.dll" Alias "EnumDisplaySettingsA" (ByVal lpszDeviceName As String, ByVal iModeNum As Long, lpDevMode As DEVMODE) As Long
Public Declare Function ChangeDisplaySettings Lib "user32.dll" Alias "ChangeDisplaySettingsA" (lpDevMode As Any, ByVal dwFlags As Long) As Long
کد:Private Sub Command1_Click()
Dim mm As DEVMODE
Dim retval As Long
Me.AutoRedraw = True
mm.dmSize = Len(mm)
retval = EnumDisplaySettings(vbNullString, ENUM_CURRENT_SETTINGS, mm)
mm.dmPelsWidth = 1024
mm.dmPelsHeight = 768
retval = ChangeDisplaySettings(mm, CDS_TEST)
If retval <> DISP_CHANGE_SUCCESSFUL Then
Me.Print "Cannot change"
Else
retval = ChangeDisplaySettings(mm, CDS_UPDATEREGISTRY)
Select Case retval
Case DISP_CHANGE_SUCCESSFUL
Me.Print " successfully"
Case DISP_CHANGE_RESTART
Me.Print "A reboot is necessary"
Case Else
Me.Print "Unable to change"
End Select
End If
End Sub
باسلامنقل قول:
حق با شما بود فرکانس قابل قبول رو روی 75 تنظیم کردم جواب داد
سلامنقل قول:
ممنون از راهنمایی شما دوست گرامی کد شما رو تست کردم کد شما هم مثل کد اقا پیمان درست کار میکرد