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

Setting screen resolution - why does this work?

P: 1
Hi,
i am nasima. I have got a code for setting the screen resolution of my page, but i am unable to understand. Can any one give a complete data explanation of the below code.

Expand|Select|Wrap|Line Numbers
  1. Sub ChangeRes(X As Long, Y As Long, Bits As Long)
  2.     Dim DevM As DEVMODE, ScInfo As Long, erg As Long, an As VbMsgBoxResult
  3.     'Get the info into DevM
  4.     erg = EnumDisplaySettings(0&, 0&, DevM)
  5.     'This is what we're going to change
  6.     DevM.dmFields = DM_PELSWIDTH Or DM_PELSHEIGHT Or DM_BITSPERPEL
  7.     DevM.dmPelsWidth = X 'ScreenWidth
  8.     DevM.dmPelsHeight = Y 'ScreenHeight
  9.     DevM.dmBitsPerPel = Bits '(can be 8, 16, 24, 32 or even 4)
  10.     'Now change the display and check if possible
  11.     erg = ChangeDisplaySettings(DevM, CDS_TEST)
  12.     'Check if succesfull
  13.     Select Case erg&
  14.         Case DISP_CHANGE_RESTART
  15.             an = MsgBox("You've to reboot", vbYesNo + vbSystemModal, "Info")
  16.             If an = vbYes Then
  17.                 erg& = ExitWindowsEx(EWX_REBOOT, 0&)
  18.             End If
  19.         Case DISP_CHANGE_SUCCESSFUL
  20.             erg = ChangeDisplaySettings(DevM, CDS_UPDATEREGISTRY)
  21.             ScInfo = Y * 2 ^ 16 + X
  22.             'Notify all the windows of the screen resolution change
  23.             SendMessage HWND_BROADCAST, WM_DISPLAYCHANGE, ByVal Bits, ByVal ScInfo
  24.             MsgBox "Everything's ok", vbOKOnly + vbSystemModal, "It worked!"
  25.         Case Else
  26.             MsgBox "Mode not supported", vbOKOnly + vbSystemModal, "Error"
  27.     End Select
  28. End Sub
  29.  
  30. Private Sub Command1_Click()
  31.     Dim sMyData As String
  32.     Dim iReply As Integer
  33.     Dim aXY As Variant
  34.     aXY = Array("", "")
  35.     sMyData = aPossible(List1.ListIndex + 1)
  36.     iReply = MsgBox("You have chosen:" + vbCrLf + sMyData, vbCritical + vbOKCancel)
  37.     If iReply = vbOK Then
  38.         aXY = Split(sMyData, "x")
  39.         aXY(0) = CInt(aXY(0))
  40.         aXY(1) = CInt(aXY(1))
  41. '       ChangeRes aXY(0), aXY(1), GetDeviceCaps(nDC, BITSPIXEL)
  42.     End If
  43. End Sub
  44.  
  45. Private Sub Form_Load()
  46.     'KPD-Team 1999
  47.     'URL: http://www.allapi.net/
  48.     'E-Mail: KPDTeam@Allapi.net
  49.     Dim nDC As Long
  50.     Dim sMyString As String
  51.     Dim bReturn As Boolean
  52.     Dim bFound As Boolean
  53.     Dim lX As Long
  54.     Dim iY As Integer       'resrved for the ordinal ubound of apossible
  55.     Dim iz As Integer
  56.     Dim DevM As DEVMODE
  57.     sMyString = "The current list" + vbCrLf + vbCrLf
  58.     sMyString = sMyString + "Screen Width:" + Str(Screen.Width) + vbCrLf
  59.     sMyString = sMyString + "Screen Height:" + Str(Screen.Height) + vbCrLf
  60.     sMyString = sMyString + "Screen TwipsPerPixelX:" + Str(Screen.TwipsPerPixelX) + vbCrLf
  61.     sMyString = sMyString + "Screen TwipsPerPixelY:" + Str(Screen.TwipsPerPixelY) + vbCrLf
  62.  
  63.     'retrieve the screen's resolution
  64.     OldX = Screen.Width / Screen.TwipsPerPixelX
  65.     OldY = Screen.Height / Screen.TwipsPerPixelY
  66.     sMyString = sMyString + "X resolution:" + Str(OldX) + vbCrLf
  67.     sMyString = sMyString + "Y resolution:" + Str(OldY) + vbCrLf
  68. '   MsgBox sMyString
  69. '   Text2.Text = Trim$(Str(OldX))
  70. '   Text3.Text = Trim$(Str(OldY))
  71.     ReDim aPossible(1)
  72.     aPossible(0) = Trim$(Str$(OldX)) + " x " + Trim$(Str$(OldY))
  73.     Text4.Text = aPossible(0)
  74. '   MsgBox aPossible(0)
  75.     sMyString = ""
  76.     lX = 0
  77.     iY = 0
  78.     'Create a device context, compatible with the screen
  79.     nDC = CreateDC("DISPLAY", vbNullString, vbNullString, ByVal 0&)
  80.     bReturn = True
  81.     While bReturn
  82.             bReturn = EnumDisplaySettings(0&, lX, DevM)
  83.             If bReturn Then     'ie. a valid entry
  84. '               sMyString = sMyString + Trim$(Str$(DevM.dmBitsPerPel)) + ":" + Trim$(Str$(DevM.dmPelsWidth)) + ":" + Trim$(Str$(DevM.dmPelsHeight)) + ":" + Str(lX) + vbCrLf
  85.                 sMyString = Trim$(Str$(DevM.dmPelsWidth)) + " x " + Trim$(Str$(DevM.dmPelsHeight))
  86.                 bFound = False
  87.                 For iz = 0 To iY
  88.                     If sMyString = aPossible(iz) Then
  89.                         bFound = True
  90.                         Exit For
  91.                     End If
  92.                 Next
  93.                 If Not bFound Then
  94.                     iY = iY + 1
  95.                     ReDim Preserve aPossible(iY)
  96.                     aPossible(iY) = sMyString
  97.                 End If
  98.                 lX = lX + 1 'Dont forget this
  99.             End If
  100.     Wend
  101.     sMyString = ""
  102.     For iz = 1 To iY
  103.         List1.AddItem aPossible(iz)
  104.     Next
  105. '   MsgBox sMyString
  106.     'Change the screen's resolution
  107. '   ChangeRes 640, 480, GetDeviceCaps(nDC, BITSPIXEL)
  108. '    Unload Me
  109. End Sub
  110.  
Oct 25 '07 #1
Share this Question
Share on Google+
1 Reply


numberwhun
Expert Mod 2.5K+
P: 3,503
If you can please confirm that this is VB code, I will move it to the appropriate forum to get your question answered.

Regards,

Jeff
Oct 25 '07 #2

Post your reply

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