Results 1 to 5 of 5

Thread: Changing windows resolution

  1. #1

    Thread Starter
    Lively Member
    Join Date
    May 2005
    Location
    Varna, Bulgaria
    Posts
    86

    Changing windows resolution

    Hello everybody. If anybody know how to change windows resolution? I want when I start my program to change resolution at 1024x768x32.I found some topics but when the resolution changed ... the Colour Quality is 16 bit

  2. #2
    Frenzied Member HanneSThEGreaT's Avatar
    Join Date
    Nov 2003
    Location
    Vereeniging, South Africa
    Posts
    1,492

    Re: Changing windows resolution

    Maybe this will help!
    Attached Files Attached Files
    VB.NET MVP 2008 - Present

  3. #3

    Thread Starter
    Lively Member
    Join Date
    May 2005
    Location
    Varna, Bulgaria
    Posts
    86

    Re: Changing windows resolution

    But this don't change the resolution.It just notify me what is my current resolution.

  4. #4
    I'm about to be a PowerPoster! Hack's Avatar
    Join Date
    Aug 2001
    Location
    Searching for mendhak
    Posts
    58,333

    Re: Changing windows resolution

    Try this
    VB Code:
    1. Private Const WM_DISPLAYCHANGE = &H7E
    2. Private Const HWND_BROADCAST = &HFFFF&
    3. Private Const EWX_LOGOFF = 0
    4. Private Const EWX_SHUTDOWN = 1
    5. Private Const EWX_REBOOT = 2
    6. Private Const EWX_FORCE = 4
    7. Private Const CCDEVICENAME = 32
    8. Private Const CCFORMNAME = 32
    9. Private Const DM_BITSPERPEL = &H40000
    10. Private Const DM_PELSWIDTH = &H80000
    11. Private Const DM_PELSHEIGHT = &H100000
    12. Private Const CDS_UPDATEREGISTRY = &H1
    13. Private Const CDS_TEST = &H4
    14. Private Const DISP_CHANGE_SUCCESSFUL = 0
    15. Private Const DISP_CHANGE_RESTART = 1
    16. Private Const BITSPIXEL = 12
    17.  
    18. Private Type DEVMODE
    19.     dmDeviceName As String * CCDEVICENAME
    20.     dmSpecVersion As Integer
    21.     dmDriverVersion As Integer
    22.     dmSize As Integer
    23.     dmDriverExtra As Integer
    24.     dmFields As Long
    25.     dmOrientation As Integer
    26.     dmPaperSize As Integer
    27.     dmPaperLength As Integer
    28.     dmPaperWidth As Integer
    29.     dmScale As Integer
    30.     dmCopies As Integer
    31.     dmDefaultSource As Integer
    32.     dmPrintQuality As Integer
    33.     dmColor As Integer
    34.     dmDuplex As Integer
    35.     dmYResolution As Integer
    36.     dmTTOption As Integer
    37.     dmCollate As Integer
    38.     dmFormName As String * CCFORMNAME
    39.     dmUnusedPadding As Integer
    40.     dmBitsPerPel As Integer
    41.     dmPelsWidth As Long
    42.     dmPelsHeight As Long
    43.     dmDisplayFlags As Long
    44.     dmDisplayFrequency As Long
    45. End Type
    46.  
    47. Private Declare Function EnumDisplaySettings Lib "user32" Alias "EnumDisplaySettingsA" (ByVal lpszDeviceName As Long, ByVal iModeNum As Long, lpDevMode As Any) As Boolean
    48. Private Declare Function ChangeDisplaySettings Lib "user32" Alias "ChangeDisplaySettingsA" (lpDevMode As Any, ByVal dwFlags As Long) As Long
    49. Private Declare Function ExitWindowsEx Lib "user32" (ByVal uFlags As Long, ByVal dwReserved As Long) As Long
    50. Private Declare Function GetDeviceCaps Lib "gdi32" (ByVal hdc As Long, ByVal nIndex As Long) As Long
    51. Private Declare Function CreateDC Lib "gdi32" Alias "CreateDCA" (ByVal lpDriverName As String, ByVal lpDeviceName As String, ByVal lpOutput As String, ByVal lpInitData As Any) As Long
    52. Private Declare Function DeleteDC Lib "gdi32" (ByVal hdc As Long) As Long
    53. Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long
    54.  
    55. Private OldX As Long
    56. Private OldY As Long
    57. Private nDC As Long
    58.  
    59. Private Sub ChangeRes(X As Long, Y As Long, Bits As Long)
    60.     Dim DevM As DEVMODE, ScInfo As Long, erg As Long, an As VbMsgBoxResult
    61.     'Get the info into DevM
    62.     erg = EnumDisplaySettings(0&, 0&, DevM)
    63.     'This is what we're going to change
    64.     DevM.dmFields = DM_PELSWIDTH Or DM_PELSHEIGHT Or DM_BITSPERPEL
    65.     DevM.dmPelsWidth = X 'ScreenWidth
    66.     DevM.dmPelsHeight = Y 'ScreenHeight
    67.     DevM.dmBitsPerPel = Bits '(can be 8, 16, 24, 32 or even 4)
    68.     'Now change the display and check if possible
    69.     erg = ChangeDisplaySettings(DevM, CDS_TEST)
    70.     'Check if succesfull
    71.     Select Case erg&
    72.         Case DISP_CHANGE_RESTART
    73.             an = MsgBox("You've to reboot", vbYesNo + vbSystemModal, "Info")
    74.             If an = vbYes Then
    75.                 erg& = ExitWindowsEx(EWX_REBOOT, 0&)
    76.             End If
    77.         Case DISP_CHANGE_SUCCESSFUL
    78.             erg = ChangeDisplaySettings(DevM, CDS_UPDATEREGISTRY)
    79.             ScInfo = Y * 2 ^ 16 + X
    80.             'Notify all the windows of the screen resolution change
    81.             SendMessage HWND_BROADCAST, WM_DISPLAYCHANGE, ByVal Bits, ByVal ScInfo
    82.             MsgBox "Everything's ok", vbOKOnly + vbSystemModal, "It worked!"
    83.         Case Else
    84.             MsgBox "Mode not supported", vbOKOnly + vbSystemModal, "Error"
    85.     End Select
    86. End Sub
    87.  
    88. Private Sub Command1_Click()
    89. 'KPD-Team 1999
    90.     'URL: [url]http://www.allapi.net/[/url]
    91.     'E-Mail: [email][email protected][/email]
    92.     Dim nDC As Long
    93.     'retrieve the screen's resolution
    94.     OldX = Screen.Width / Screen.TwipsPerPixelX
    95.     OldY = Screen.Height / Screen.TwipsPerPixelY
    96.     'Create a device context, compatible with the screen
    97.     nDC = CreateDC("DISPLAY", vbNullString, vbNullString, ByVal 0&)
    98.     'Change the screen's resolution
    99.     ChangeRes 640, 480, GetDeviceCaps(nDC, BITSPIXEL)
    100. End Sub

  5. #5

    Thread Starter
    Lively Member
    Join Date
    May 2005
    Location
    Varna, Bulgaria
    Posts
    86

    Re: Changing windows resolution

    yes,it really works but ... the screen refresh rate is changed and I want to keep it.It was 100 hertz and now is 60 ... is it possible to keep it ?

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •  



Click Here to Expand Forum to Full Width