PDA

View Full Version : تغییر رزولوشن مونیتور ( Error )



مسعود م
پنج شنبه 18 اردیبهشت 1382, 14:04 عصر
چطور می توان رزولوشن را در برنامه تغییر داد ؟

( برای دیدن درست برنامه ام نیاز به رزولوشن خاصی (600 * 800 ) می باشد.

با تشکر

Vahid_Nasiri
جمعه 19 اردیبهشت 1382, 11:23 صبح
Public Sub ChangeResolution(iWidth As Single, iHeight As Single)

Dim DevM As DEVMODE
Dim A As Boolean
Dim i As Long
Dim b As Long

i = 0

'Enumerate settings
Do
A = EnumDisplaySettings(0&, i&, DevM)
i = i + 1
Loop Until (A = False)

'Change settings
DevM.dmFields = DM_PELSWIDTH Or DM_PELSHEIGHT

DevM.dmPelsWidth = iWidth
DevM.dmPelsHeight = iHeight

b = ChangeDisplaySettings(DevM, 0)

End Sub

Farhad.B.S
جمعه 19 اردیبهشت 1382, 13:17 عصر
ببهشید که سوال تو سوال شد.
میخواستم بپرسم برای تغییر تعداد رنگ صفحه باید چی کار کرد ؟
ممنون. :wink:

مسعود م
شنبه 20 اردیبهشت 1382, 17:27 عصر
تشکر از پاسخ شما و وقتی که گذاشتید. :P

مسعود م
پنج شنبه 01 خرداد 1382, 17:04 عصر
با عرض پوزش مجدد !
وقتی برنامه را اجرا می کنم . از خط ( Dim DevM As DEVMODE )
ایراد ( User-Defined type not defined ) می گیرد .
احتمالا چیزی بعنوان پیش فرض می خواهد. :!:

مسعود م
پنج شنبه 01 خرداد 1382, 17:04 عصر
با عرض پوزش مجدد !
وقتی برنامه را اجرا می کنم . از خط ( Dim DevM As DEVMODE )
ایراد ( User-Defined type not defined ) می گیرد .
احتمالا چیزی بعنوان پیش فرض می خواهد. :!:

Abbas Arizi
پنج شنبه 01 خرداد 1382, 19:00 عصر
اگر این را به Declaration برنامه اضافه کنید، درست میشود.

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 Integer
dmPelsWidth As Long
dmPelsHeight As Long
dmDisplayFlags As Long
dmDisplayFrequency As Long
End Type

war1351
یک شنبه 30 تیر 1387, 03:52 صبح
با زم مشکل داره

DarkSoroush
یک شنبه 30 تیر 1387, 12:02 عصر
خب!! این کدی که اقای عباس گذاشته درسته ولی چون داریم با دات نت کار میکنیم باید بعضی جاها از تعریفهای مارشال استفاده کرد!! این کد رو من اینطوری مدیفای کردم. عمل میکنه:
یک ماژول بسازید و این کد رو کپی پیست کنید:


Module m_ChangeDisplaySettingsEX
Public Const CDS_UPDATEREGISTRY As Integer = &H1
Public Const CDS_TEST As Integer = &H2
Public Const CDS_FULLSCREEN As Integer = &H4
Public Const DISP_CHANGE_SUCCESSFUL As Short = 0
Public Const DISP_CHANGE_RESTART As Short = 1
Public Const ENUM_CURRENT_SETTINGS As Short = -1
Public Structure DEVMODE
<VBFixedString(32), System.Runtime.InteropServices.MarshalAs(System.Ru ntime.InteropServices.UnmanagedType.ByValArray, SizeConst:=32)> Public dmDeviceName() As Char
Dim dmSpecVersion As Short
Dim dmDriverVersion As Short
Dim dmSize As Short
Dim dmDriverExtra As Short
Dim dmFields As Integer
Dim dmOrientation As Short
Dim dmPaperSize As Short
Dim dmPaperLength As Short
Dim dmPaperWidth As Short
Dim dmScale As Short
Dim dmCopies As Short
Dim dmDefaultSource As Short
Dim dmPrintQuality As Short
Dim dmColor As Short
Dim dmDuplex As Short
Dim dmYResolution As Short
Dim dmTTOption As Short
Dim dmCollate As Short
<VBFixedString(32), System.Runtime.InteropServices.MarshalAs(System.Ru ntime.InteropServices.UnmanagedType.ByValArray, SizeConst:=32)> Public dmFormName() As Char
Dim dmUnusedPadding As Short
Dim dmBitsPerPixel As Short
Dim dmPelsWidth As Integer
Dim dmPelsHeight As Integer
Dim dmDisplayFlags As Integer
Dim dmDisplayFrequency As Integer
End Structure
Public Declare Function EnumDisplaySettings Lib "user32.dll" Alias "EnumDisplaySettingsA" (ByVal lpszDeviceName As String, ByVal iModeNum As Integer, ByRef lpDevMode As DEVMODE) As Integer
Public Declare Function ChangeDisplaySettings Lib "user32.dll" Alias "ChangeDisplaySettingsA" (ByRef lpDevMode As DEVMODE, ByVal dwFlags As Integer) As Integer
End Module


در رویداد اصلیتون بنویسید:


Dim D_DevSet As New DEVMODE
Dim o_retval As Integer
D_DevSet.dmSize = Len(D_DevSet)
o_retval = EnumDisplaySettings(vbNullString, ENUM_CURRENT_SETTINGS, D_DevSet)
D_DevSet.dmPelsWidth = 1024 'تغییر رزیلوشن
D_DevSet.dmPelsHeight = 768 'تغییر رزیلوشن
D_DevSet.dmBitsPerPixel = 32 'وضوح تصویر یا تعداد رنگها به صورت بیت
o_retval = ChangeDisplaySettings(D_DevSet, CDS_TEST)
If o_retval <> DISP_CHANGE_SUCCESSFUL Then
MessageBox.Show("Faild")
Else
o_retval = ChangeDisplaySettings(D_DevSet, CDS_UPDATEREGISTRY)
Select Case o_retval
Case DISP_CHANGE_SUCCESSFUL
MessageBox.Show("Success")
Case DISP_CHANGE_RESTART
MessageBox.Show("Need ReStart")
Case Else
MessageBox.Show("Faild")
End Select
End If