LinkBack Thread Tools Search this Thread Display Modes
Prev Previous Post   Next Post Next
  #1   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 1
Default Restoring Screen Resolutions

Hi All,

I have an Excel application in which I change the resolution on entr
if the resolution is less than 1024 X768. The application consists of
different workbooks, on exit I want to restore the original settings.

I have been successfully changing the resolution but I cannot seem t
return the original settings when I dynamically set the resolution.

I was under the impression that when I used the flag 0& I was changin
the resolution dynamically & it was not written to the registry.

Call ChangeDisplaySettings(DevM, 0&)

And when I used the Null as the mode the original settings in th
registry would be restored.

Call ChangeDisplaySettings(vbNullString, 0&)

Has anyone had any experience with this? The application will b
running Office 2000 & upwards (OS Win95- WindowsXP).

I know it is not good practice to change users display settings but a
this stage I have to use this method.

Thanks,
Adam.

Private Declare Function EnumDisplaySettings Lib "user32" _
Alias "EnumDisplaySettingsA" _
(ByVal lpszDeviceName As Long, _
ByVal iModeNum As Long, _
lpDevMode As Any) As Boolean

Private Declare Function ChangeDisplaySettings Lib "user32" _
Alias "ChangeDisplaySettingsA" _
(lpDevMode As Any, _
ByVal dwFlags As Long) As Long

Private Type DEVMODE
dmDeviceName As String * CCDEVICENAME
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 * CCFORMNAME
dmUnusedPadding As Integer
dmBitsPerPel As Integer
dmPelsWidth As Long
dmPelsHeight As Long
dmDisplayFlags As Long
dmDisplayFrequency As Long
End Type

Sub ChangeRes()
'Change resolution to 1024 X 768
Const CDS_UPDATEREGISTRY = &H1
Const CDS_TEST = &H4

Dim blnWorked As Boolean
Dim i As Long
Dim DevM As DEVMODE
i = 0
Do
blnWorked = EnumDisplaySettings(0&, i, DevM)
i = i + 1
Loop Until (blnWorked = False)

With DevM
.dmFields = DM_PELSWIDTH Or DM_PELSHEIGHT
.dmPelsWidth = 1024
.dmPelsHeight = 768
End With

'Update dynamically
Call ChangeDisplaySettings(DevM, 0&)

End Sub

Sub ReturnSettings()
'Return Settings
Call ChangeDisplaySettings(vbNullString, 0&)
End Sub



[b]:

--
Message posted from http://www.ExcelForum.com

 
Thread Tools Search this Thread
Search this Thread:

Advanced Search
Display Modes

Posting Rules

Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are On


Similar Threads
Thread Thread Starter Forum Replies Last Post
Status bar disappears when restoring screen size Ernie Excel Discussion (Misc queries) 0 November 24th 08 05:24 PM
Need to convert point on screen to various screen resolutions Donna YaWanna Excel Discussion (Misc queries) 5 October 26th 05 10:10 PM
How to position form in same place with different screen resolutions Joe 90[_2_] Excel Programming 5 May 6th 04 10:27 AM
Resizing BackgroundPicture Gifs programmatically for varying screen resolutions Charles Jordan Excel Programming 4 April 13th 04 06:53 PM
different screen resolutions Rob Excel Programming 0 December 10th 03 09:48 PM


All times are GMT +1. The time now is 09:15 AM.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Copyright ©2004-2024 ExcelBanter.
The comments are property of their posters.
 

About Us

"It's about Microsoft Excel"