Como puedo saber la resolucion de la pantalla?
estoy utilizando los asistentes como los que utiliza el office, pero no estoy seguro si cuando utilizo moveto el asistente se mueve en pixeles (creo que si).
| |||
saber la resolucion de la pantalla en VB6? Como puedo saber la resolucion de la pantalla? estoy utilizando los asistentes como los que utiliza el office, pero no estoy seguro si cuando utilizo moveto el asistente se mueve en pixeles (creo que si). |
| ||||
checa este ejemplo tomado de www.allapi.net 'Example submitted by Guille ([email protected]) 'Visit his website at http://guille.costasol.net/ Option Explicit Const ENUM_CURRENT_SETTINGS As Long = -1& Const CCDEVICENAME = 32 Const CCFORMNAME = 32 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 Private Declare Function EnumDisplaySettings Lib "user32" Alias "EnumDisplaySettingsA" (ByVal lpszDeviceName As Long, ByVal iModeNum As Long, lpDevMode As Any) As Boolean Private Sub Form_Load() Dim DevM As DEVMODE Call EnumDisplaySettings(0&, ENUM_CURRENT_SETTINGS, DevM) Debug.Print "Current screen width: " & DevM.dmPelsWidth & " pixels" Debug.Print "Current screen height: " & DevM.dmPelsHeight & " pixels" Debug.Print "Current color depth: " & DevM.dmBitsPerPel & " bits/pixel" End Sub |
| |||
Siempre hay mil formas de hacer lo mismo. Pero ni pa que me dicen porque el me respondio primero y bastante mejor explicadito que sus simples comentarios. Incluso recientemente descubri otra forma que tambien me hubiera servido y es: Poner la siguiente declaracion: Declare Function GetSystemMetrics Lib "user32" (ByVal nIndex As Long) As Long y se usa asi: iScreenHeight = GetSystemMetrics(1) iScreenWidth = GetSystemMetrics(0) eso tambien me da la resolucion en pixeles |
| |||
Sin API ¿Querés saber la resolución de pantalla y los Twips por pixel?, usá el siguiente código: Dim Ancho As Integer Dim Alto As Integer Ancho = Screen.Width / Screen.TwipsPerPixelX Alto = Screen.Height / Screen.TwipsPerPixelY Print Ancho, Alto
__________________ Gustavo Azcona® |
| |||
Respuesta: saber la resolucion de la pantalla en VB6? Cita: No, no, no. Un píxel es un punto más o menos gordo en función de la resolución de pantalla, por tanto, la relación entre píxel y twips o entre píxel y punto o entre píxel y pulgada no es siempre la misma. Este código te permitirá saber, en cada momento lo gordo (ancho y alto en twips) que es tu píxel:
Código:
Option Explicit Declare Function GetDC Lib "user32" (ByVal hwnd As Long) As Long Declare Function ReleaseDC Lib "user32" (ByVal hwnd As Long, ByVal hdc As Long) As Long Declare Function GetDeviceCaps Lib "gdi32" (ByVal hdc As Long, ByVal nIndex As Long) As Long Const HWND_DESKTOP As Long = 0 Const LOGPIXELSX As Long = 88 Const LOGPIXELSY As Long = 90 '-------------------------------------------------- Function TwipsPerPixelX() As Single '-------------------------------------------------- 'Devuelve la anchura de un píxel expresada twips. Dim lngDC As Long lngDC = GetDC(HWND_DESKTOP) TwipsPerPixelX = 1440& / GetDeviceCaps(lngDC, LOGPIXELSX) ReleaseDC HWND_DESKTOP, lngDC End Function '-------------------------------------------------- Function TwipsPerPixelY() As Single '-------------------------------------------------- 'Devuelve la altura de un píxel expresada twips. Dim lngDC As Long lngDC = GetDC(HWND_DESKTOP) TwipsPerPixelY = 1440& / GetDeviceCaps(lngDC, LOGPIXELSY) ReleaseDC HWND_DESKTOP, lngDC End Function |