Foros del Web » Programación para mayores de 30 ;) » Programación General » Visual Basic clásico »

Cambiar la resolucion de la pantalla

Estas en el tema de Cambiar la resolucion de la pantalla en el foro de Visual Basic clásico en Foros del Web. Hola, me gustaria saber como averiguar la resolucion que tiene la pantalla a la hora de ejecutarse un programa, asi como la forma de cambiarla ...
  #1 (permalink)  
Antiguo 21/02/2005, 21:54
Avatar de robertonavarro  
Fecha de Ingreso: octubre-2004
Mensajes: 72
Antigüedad: 19 años, 6 meses
Puntos: 1
Cambiar la resolucion de la pantalla

Hola, me gustaria saber como averiguar la resolucion que tiene la pantalla a la hora de ejecutarse un programa, asi como la forma de cambiarla desde Vb.

GRACIAS.
  #2 (permalink)  
Antiguo 22/02/2005, 06:54
Avatar de vbx3m  
Fecha de Ingreso: febrero-2005
Ubicación: Venezuela
Mensajes: 524
Antigüedad: 19 años, 3 meses
Puntos: 1
Resolucion

En un modulo colocas:

Public Declare Function EnumDisplaySettings Lib "user32.dll" Alias "EnumDisplaySettingsA" (ByVal lpszDeviceName As Long, ByVal iModeNum As Long, lpDevMode As Any) As Boolean
Public Declare Function ChangeDisplaySettings Lib "user32.dll" Alias "ChangeDisplaySettingsA" (lpDevMode As Any, ByVal dwFlags As Long) As Long
Public Declare Function GetSystemMetrics Lib "user32" (ByVal nIndex As Long) As Long

Public Const CCDEVICENAME = 32
Public Const CCFORMNAME = 32
Public Const DM_PELSWIDTH = &H80000
Public Const DM_PELSHEIGHT = &H100000

Public 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

Public DevChg As DEVMODE

Public Sub ChangeRes(iWidth As Single, iHeight As Single)
Dim a As Boolean
Dim I&
I = 0
Do
a = EnumDisplaySettings(0&, I&, DevChg)
I = I + 1
Loop Until (a = False)
Dim b&
DevChg.dmFields = DM_PELSWIDTH Or DM_PELSHEIGHT
DevChg.dmPelsWidth = iWidth
DevChg.dmPelsHeight = iHeight
b = ChangeDisplaySettings(DevChg, 0)
End Sub

Y en el formulario:

Public Sub CheckRes()
Dim X As Long, Y As Long
Dim MsgTitle As String
Dim MsgStyle As Long
Dim msg As String
Dim MsgResponse As Long
Y = GetSystemMetrics(0)
X = GetSystemMetrics(1)
If "" & Y & "x" & X <> "1024x768" Then 'Aqui es donde comparas la resolucion
MsgBox "La resolución de su monitor es " & Y & "x" & X & "
Call ChangeRes(1024, 768) 'Aqui asignas la resolucion que quieres
End If
End Sub

Pruebalo...
  #3 (permalink)  
Antiguo 08/03/2005, 00:49
 
Fecha de Ingreso: marzo-2005
Mensajes: 4
Antigüedad: 19 años, 2 meses
Puntos: 0
ami no me funciona (alomejor lo estoy poniendo mal, voy a re-revisar)
  #4 (permalink)  
Antiguo 08/03/2005, 08:19
Avatar de vbx3m  
Fecha de Ingreso: febrero-2005
Ubicación: Venezuela
Mensajes: 524
Antigüedad: 19 años, 3 meses
Puntos: 1
Resolucion

Te acordaste de hacer el llamado a Changeres y a CheckRes?...
__________________
ホルヘ・ラファエル・マルティネス・レオン
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 04:30.