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

Fuentes Windows y VB

Estas en el tema de Fuentes Windows y VB en el foro de Visual Basic clásico en Foros del Web. De antemano agradezco vuestra ayuda. El tema es el siguiente. Windows se instala por defecto con las fuentes a 96 ppp (escritorio-propiedades-configuracion-opciones avanzadas). Hoy en ...
  #1 (permalink)  
Antiguo 04/07/2009, 00:40
 
Fecha de Ingreso: octubre-2008
Mensajes: 188
Antigüedad: 15 años, 6 meses
Puntos: 3
Fuentes Windows y VB

De antemano agradezco vuestra ayuda. El tema es el siguiente. Windows se instala por defecto con las fuentes a 96 ppp (escritorio-propiedades-configuracion-opciones avanzadas).
Hoy en día con las pantallas TFT la gente apenas usa la resolución 800x600 y agranda las fuentes, en vez de 96ppp pone de 120 ppp para arriba, y la sorpresa viene que en cuanto agrandas el tipo de letra el fondo del formulario (el gráfico) no se adapta al formulario (no expande), con lo cual el resultado es desastroso.
No he conseguido solucionarlo ni entenderlo.
Si teneis alguna idea o sugerencia os lo agradezco.
Un saludo y gracias.
  #2 (permalink)  
Antiguo 04/07/2009, 06:18
 
Fecha de Ingreso: noviembre-2008
Mensajes: 136
Antigüedad: 15 años, 5 meses
Puntos: 2
Mensaje Respuesta: Fuentes Windows y VB

Saludos, encontre un muy buen tutorial para solucionar tu problema:
http://www.dreamincode.net/forums/showtopic34776.htm

El único inconveniente es que se encuentra en Ingles, pero casi todo esta asi :)

Espero que te sea de utilidad
  #3 (permalink)  
Antiguo 04/07/2009, 07:46
 
Fecha de Ingreso: octubre-2008
Mensajes: 188
Antigüedad: 15 años, 6 meses
Puntos: 3
Respuesta: Fuentes Windows y VB

Gracias por la información. Estudiaré ese tutorial y si saco lo que busco lo pongo en el foro.
Gracias de nuevo y un saludo.
  #4 (permalink)  
Antiguo 05/07/2009, 03:46
 
Fecha de Ingreso: octubre-2008
Mensajes: 188
Antigüedad: 15 años, 6 meses
Puntos: 3
Respuesta: Fuentes Windows y VB

En cierto modo lo he conseguido, y digo en cierto modo porque solo funciona con formulario al uso, es decir, con formularios que tengan areas transparentes, no lo he conseguido.

Módulo:
Option Explicit

Public OldWindowProc As Long
Declare Function CallWindowProc Lib "user32" Alias "CallWindowProcA" (ByVal lpPrevWndFunc As Long, ByVal hwnd As Long, ByVal msg As Long, ByVal wParam As Long, lParam As WINDOWPOS) As Long
Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long
Public Const GWL_WNDPROC = (-4)

Type WINDOWPOS
hwnd As Long
hWndInsertAfter As Long
x As Long
y As Long
cx As Long
cy As Long
flags As Long
End Type
Public Const WM_WINDOWPOSCHANGING = &H46
Public Const WM_WINDOWPOSCHANGED = &H47
' *********************************************
' Process messages.
' *********************************************
Public Function NewWindowProc(ByVal hwnd As Long, ByVal msg As Long, ByVal wParam As Long, lParam As WINDOWPOS) As Long
' Size bounds in pixels.
Const MIN_WIDTH = 200
Const MAX_WIDTH = 500
Const MIN_HEIGHT = 100
Const MAX_HEIGHT = 300

' Keep the dimensions in bounds.
If msg = WM_WINDOWPOSCHANGING Then
If lParam.cx < MIN_WIDTH Then lParam.cx = MIN_WIDTH
If lParam.cx > MAX_WIDTH Then lParam.cx = MAX_WIDTH
If lParam.cy < MIN_HEIGHT Then lParam.cy = MIN_HEIGHT
If lParam.cy > MAX_HEIGHT Then lParam.cy = MAX_HEIGHT
End If

' Continue normal processing. VERY IMPORTANT!
NewWindowProc = CallWindowProc( _
OldWindowProc, hwnd, msg, wParam, _
lParam)
End Function


Form:

Private Sub Form_Load()
OldWindowProc = SetWindowLong( _
hwnd, GWL_WNDPROC, _
AddressOf NewWindowProc)
End Sub


Nota:
En el Form, ScaleMode= 3 Pixel
Las medidas del Form las coges de los valores ScaleHeigt y ScaldeWidth


Supongo que tiene que haber otros metodos. Si a alguien se le ocurre algo... Si logro alguna otra solución, ya lo pongo en el foro.

Gracias y un saludo
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 23:48.