Visual Basic - Cambiar resolucion de pantalla por codigo

Life is soft - evento anual de software empresarial
 
Vista:

Cambiar resolucion de pantalla por codigo

Publicado por abg (20 intervenciones) el 26/04/2001 10:39:51
¿Alguien sabe si se puede cambiar la resolucion de pantalla por codigo desde dentro de Visual Basic?. Supongo que por una API.

Agradeceré ejemplo en codigo
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Cambiar resolucion de pantalla por codigo

Publicado por Morpheo (2 intervenciones) el 28/04/2001 03:12:38
Esta solución la obtuve de un colaborador de los foros.
Adaptalo a tu codigo:
Const CCDEVICENAME = 32
Const CCFORMNAME = 32
\'Las declaraciones de estas constantes están en: Wingdi.h
Const DM_BITSPERPEL = &H40000
Const DM_PELSWIDTH = &H80000
Const DM_PELSHEIGHT = &H100000

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

Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Cambiar resolucion de pantalla por codigo

Publicado por Morpheo (9 intervenciones) el 28/04/2001 03:14:14
SEGUNDA PARTE

Dim DevM As DEVMODEDim a, b, d, i As Long
Dim Resultado As Long
Dim c As Integer

Do
a = EnumDisplaySettings(0&, i&, DevM)
i = i + 1
If a Then

If Format$(DevM.dmPelsWidth, " @@@@") = 800 And Format$(DevM.dmPelsHeight, "@@@@") = 600 And Format$(DevM.dmBitsPerPel, "@@") = 16 Then
a = False
End If

End If

Loop While a

largo = (Screen.Width \ Screen.TwipsPerPixelX) 'GetDeviceCaps(frmInicio_1.hdc, 8)
alto = (Screen.Height \ Screen.TwipsPerPixelX) 'GetDeviceCaps(frmInicio_1.hdc, 10)

Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Cambiar resolucion de pantalla por codigo

Publicado por Morrpheo (9 intervenciones) el 28/04/2001 03:15:21
TERCERA PARTE

a = 800
b = 600

If largo = 640 And alto = 480 Then
Respuesta = MsgBox("ADVERTENCIA: Tu resolucion actual es " & largo & " X " & alto & " esta resolucion no es la recomendada" & _
" para el uso del sistema la resolucion recomendada es 800 X 600, si deseas cambiar a esta resolucion presiona el" & _
" boton ACEPTAR o de lo contrario presiona CANCELAR (NO RECOMENDADO) para mantener la resolucion actual", vbOKCancel + vbInformation + vbDefaultButton2, "SYSCONTEL")

If Respuesta = vbOK Then

' DevM.dmFields = DM_PELSWIDTH Or DM_PELSHEIGHT
DevM.dmPelsWidth = a
DevM.dmPelsHeight = b
DevM.dmBitsPerPel = 8

Resultado = ChangeDisplaySettings(DevM, 0)

DevM.dmPels
DevM.dmPelsWidth = a
DevM.dmPelsHeight = b
DevM.dmBitsPerPel = 16

Resultado = ChangeDisplaySettings(DevM, 0)

' MsgBox Resultado
largo = 800
alto = 600

End If
End If
Api utilizada para tomar las propiedades de la Resolucion
Declare Function EnumDisplaySettings Lib "user32" Alias "EnumDisplaySettingsA" _
(ByVal lpszDeviceName As Long, ByVal iModeNum As Long, _
lpDevMode As Any) As Boolean

'Api utilizada para cambiar la resolucion
Declare Function ChangeDisplaySettings Lib "user32" Alias "ChangeDisplaySettingsA" _
(lpDevMode As Any, ByVal dwflags As Long) As Long
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar