By using this site, you agree to our updated Privacy Policy and our Terms of Use. Manage your Cookies Settings.
424,985 Members | 1,830 Online
Bytes IT Community
+ Ask a Question
Need help? Post your question and get tips & solutions from a community of 424,985 IT Pros & Developers. It's quick & easy.

Change Resolution

P: 1
Hi All,
I am currently working on a product using vb and ms- access..
I want to change the resolution of my own software irrespective of windows settings
as done in case of various games.The product best works on 800-600
Feb 3 '08 #1
Share this Question
Share on Google+
2 Replies


lotus18
100+
P: 866
Hi

I'm using this for some of my program. This example came from allapi.net

Expand|Select|Wrap|Line Numbers
  1.  
  2. Option Explicit
  3. Const WM_DISPLAYCHANGE = &H7E
  4. Const HWND_BROADCAST = &HFFFF&
  5. Const EWX_LOGOFF = 0
  6. Const EWX_SHUTDOWN = 1
  7. Const EWX_REBOOT = 2
  8. Const EWX_FORCE = 4
  9. Const CCDEVICENAME = 32
  10. Const CCFORMNAME = 32
  11. Const DM_BITSPERPEL = &H40000
  12. Const DM_PELSWIDTH = &H80000
  13. Const DM_PELSHEIGHT = &H100000
  14. Const CDS_UPDATEREGISTRY = &H1
  15. Const CDS_TEST = &H4
  16. Const DISP_CHANGE_SUCCESSFUL = 0
  17. Const DISP_CHANGE_RESTART = 1
  18. Const BITSPIXEL = 12
  19. Private Type DEVMODE
  20.     dmDeviceName As String * CCDEVICENAME
  21.     dmSpecVersion As Integer
  22.     dmDriverVersion As Integer
  23.     dmSize As Integer
  24.     dmDriverExtra As Integer
  25.     dmFields As Long
  26.     dmOrientation As Integer
  27.     dmPaperSize As Integer
  28.     dmPaperLength As Integer
  29.     dmPaperWidth As Integer
  30.     dmScale As Integer
  31.     dmCopies As Integer
  32.     dmDefaultSource As Integer
  33.     dmPrintQuality As Integer
  34.     dmColor As Integer
  35.     dmDuplex As Integer
  36.     dmYResolution As Integer
  37.     dmTTOption As Integer
  38.     dmCollate As Integer
  39.     dmFormName As String * CCFORMNAME
  40.     dmUnusedPadding As Integer
  41.     dmBitsPerPel As Integer
  42.     dmPelsWidth As Long
  43.     dmPelsHeight As Long
  44.     dmDisplayFlags As Long
  45.     dmDisplayFrequency As Long
  46. End Type
  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. Dim OldX As Long, OldY As Long, nDC As Long
  55. Sub ChangeRes(X As Long, Y As Long, Bits As Long)
  56.     Dim DevM As DEVMODE, ScInfo As Long, erg As Long, an As VbMsgBoxResult
  57.     'Get the info into DevM
  58.     erg = EnumDisplaySettings(0&, 0&, DevM)
  59.     'This is what we're going to change
  60.     DevM.dmFields = DM_PELSWIDTH Or DM_PELSHEIGHT Or DM_BITSPERPEL
  61.     DevM.dmPelsWidth = X 'ScreenWidth
  62.     DevM.dmPelsHeight = Y 'ScreenHeight
  63.     DevM.dmBitsPerPel = Bits '(can be 8, 16, 24, 32 or even 4)
  64.     'Now change the display and check if possible
  65.     erg = ChangeDisplaySettings(DevM, CDS_TEST)
  66.     'Check if succesfull
  67.     Select Case erg&
  68.         Case DISP_CHANGE_RESTART
  69.             an = MsgBox("You've to reboot", vbYesNo + vbSystemModal, "Info")
  70.             If an = vbYes Then
  71.                 erg& = ExitWindowsEx(EWX_REBOOT, 0&)
  72.             End If
  73.         Case DISP_CHANGE_SUCCESSFUL
  74.             erg = ChangeDisplaySettings(DevM, CDS_UPDATEREGISTRY)
  75.             ScInfo = Y * 2 ^ 16 + X
  76.             'Notify all the windows of the screen resolution change
  77.             SendMessage HWND_BROADCAST, WM_DISPLAYCHANGE, ByVal Bits, ByVal ScInfo
  78.             MsgBox "Everything's ok", vbOKOnly + vbSystemModal, "It worked!"
  79.         Case Else
  80.             MsgBox "Mode not supported", vbOKOnly + vbSystemModal, "Error"
  81.     End Select
  82. End Sub
  83. Private Sub Form_Load()
  84.     Dim nDC As Long
  85.     'retrieve the screen's resolution
  86.     OldX = Screen.Width / Screen.TwipsPerPixelX
  87.     OldY = Screen.Height / Screen.TwipsPerPixelY
  88.     'Create a device context, compatible with the screen
  89.     nDC = CreateDC("DISPLAY", vbNullString, vbNullString, ByVal 0&)
  90.     'Change the screen's resolution
  91.     ChangeRes 800, 600, GetDeviceCaps(nDC, BITSPIXEL)
  92. End Sub
  93. Private Sub Form_Unload(Cancel As Integer)
  94.     'restore the screen resolution
  95.     ChangeRes OldX, OldY, GetDeviceCaps(nDC, BITSPIXEL)
  96.     'delete our device context
  97.     DeleteDC nDC
  98. End Sub
  99.  
  100.  
Rey Sean
Feb 3 '08 #2

P: 68
Hi Rey Sean,
It is also helpful for others.

Regards,
shuvo2k6
Feb 3 '08 #3

Post your reply

Sign in to post your reply or Sign up for a free account.