Autor Tema: Utilizar una fuente (.ttf) contenida en un .RES en vb6  (Leído 2763 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Cymas

  • Bit
  • Mensajes: 7
  • Reputación: +0/-0
  • La mente es solo tan fuerte como débil el cuerpo.
    • Ver Perfil
Utilizar una fuente (.ttf) contenida en un .RES en vb6
« en: Enero 05, 2015, 03:03:56 am »
De antemano gracias por la ayuda.
Soy nuevo así que si me lo ponen como receta mucho mejor... gracias.

Necesito extraer una fuente(.ttf) personalizada que está en el archivo de recursos del proyecto y al mismo tiempo como poder utilizarla para mostrar el contenido de un label con esa fuente.
Sin registrar el archivo ttf en la carpeta Fonts del win.

Código: (VB) [Seleccionar]
Function ExtraerFuente() as stdfont
extraerfuente = recursos.mifuente
end function

por ejemplo.
El mal como tal no existe, sino lo que existe es una ausencia del bien.
Saludos, desde las montañas de Guatemala.

cobein

  • Moderador Global
  • Gigabyte
  • *****
  • Mensajes: 348
  • Reputación: +63/-0
  • Más Argentino que el morcipan
    • Ver Perfil
Re:Utilizar una fuente (.ttf) contenida en un .RES en vb6
« Respuesta #1 en: Enero 05, 2015, 04:41:39 pm »
Agregas la fuente en un archivo de recursos, en el ejemplo yo cargue la fuente como TTF, luego llamas a la funcion LoadResourceFont(<nombre de la fuente>) y listo, la fuente va a estar disponible en el contexto de tu programa. Si tenes problemas luego subo un ejemplo completo pero tendrias que poder hacerlo funcionar.

Código: [Seleccionar]
'---------------------------------------------------------------------------------------
' Module    : mLoadResFont
' Author    : Cobein
' Date      : 28/10/2011
' Purpose   : Load font from resource
'---------------------------------------------------------------------------------------
Option Explicit

Private Declare Function LoadResource Lib "kernel32.dll" (ByVal hInstance As Long, ByVal hResInfo As Long) As Long
Private Declare Function FindResource Lib "kernel32.dll" Alias "FindResourceA" (ByVal hInstance As Long, ByVal lpName As String, ByVal lpType As String) As Long
Private Declare Function SizeofResource Lib "kernel32.dll" (ByVal hInstance As Long, ByVal hResInfo As Long) As Long
Private Declare Function AddFontMemResourceEx Lib "gdi32.dll" (ByVal pvoid As Long, ByVal dword As Long, ByVal DESIGNVECTOR As Long, ByVal pDword As Long) As Long
Private Declare Function CreateFont Lib "gdi32.dll" Alias "CreateFontA" (ByVal pbFont As Long, ByVal cbFont As Long, ByVal E As Long, ByVal O As Long, ByVal W As Long, ByVal I As Long, ByVal u As Long, ByVal S As Long, ByVal C As Long, ByVal OP As Long, ByVal CP As Long, ByVal Q As Long, ByVal PAF As Long, ByVal F As String) As Long

Public Function LoadResourceFont(ByVal sFontName As String) As Long
    Dim lResource   As Long
    Dim lAddress    As Long
    Dim lSize       As Long
    Dim lCount      As Long
   
    On Error GoTo LoadResourceFont_Error

    lResource = FindResource(App.hInstance, sFontName, "TTF") 'Im using TTF with XN resource Editor but you can use RT_FONT
    lAddress = LoadResource(App.hInstance, lResource)
    lSize = SizeofResource(App.hInstance, lResource)
    LoadResourceFont = AddFontMemResourceEx(lAddress, lSize, ByVal 0&, VarPtr(lCount))
   
    On Error GoTo 0
    Exit Function

LoadResourceFont_Error:

    MsgBox "Error " & Err.Number & " (" & Err.Description & ") in procedure LoadResourceFont of Módulo mLoadResFont"
End Function

Cymas

  • Bit
  • Mensajes: 7
  • Reputación: +0/-0
  • La mente es solo tan fuerte como débil el cuerpo.
    • Ver Perfil
Re:Utilizar una fuente (.ttf) contenida en un .RES en vb6
« Respuesta #2 en: Enero 05, 2015, 10:23:28 pm »
Disculpa cobein pero no logro hacer que la fuente que esta en el archivo de recursos se cargue en memoria (supongo que eso es lo que hace), como debería hacerse exactamente la llamada a la función y si es necesaria alguna variable que almacene la fuente.
Una pregunta mas el nombre de la fuente al que se hace referencia en la llamada a la función es la del archivo que se cargó en el .res o es el numero que lo identifica en los recursos.

¿podría ser así? ???

Código: [Seleccionar]
Dim Fuente as long

sub algun_procedimiento
fuente = LoadResourceFont("Mi_Fuente.ttf")
label1.font = fuente
end sub

¿O como debe ser?

Gracias por responder
El mal como tal no existe, sino lo que existe es una ausencia del bien.
Saludos, desde las montañas de Guatemala.

cobein

  • Moderador Global
  • Gigabyte
  • *****
  • Mensajes: 348
  • Reputación: +63/-0
  • Más Argentino que el morcipan
    • Ver Perfil
Re:Utilizar una fuente (.ttf) contenida en un .RES en vb6
« Respuesta #3 en: Enero 06, 2015, 09:27:22 am »
Adjunto un ejemplo, un detalle que olvide decir es que tiene que estar compilado para que funcione. Esto no es problema porque durante el desarrollo podes instar las fuentes en el sistema sin ningún problema.

Use XN resource editor.

Hay tres nombres que tenes que tener en cuenta, primero el de la sección del recurso en este caso "TTF", luego el recurso en si que seria "TTF1" y por ultimo el nombre de la fuente "Code 128".

https://dl.dropboxusercontent.com/u/43394978/Font.rar

Saludos

Cymas

  • Bit
  • Mensajes: 7
  • Reputación: +0/-0
  • La mente es solo tan fuerte como débil el cuerpo.
    • Ver Perfil
Re:Utilizar una fuente (.ttf) contenida en un .RES en vb6
« Respuesta #4 en: Enero 06, 2015, 12:07:41 pm »
Gracias amigo cobein, esta cuestión de las fuentes ¡¡¡ya fue resuelta!!! 

Yo utilizo el Resource Hacker y también funciona de maravilla
es para poner la fuente en un control de usuario ya voy a probar el code supongo que funcionará.

Ya pueden cerrar el tema.

Saludos desde S.M. Guatemala
El mal como tal no existe, sino lo que existe es una ausencia del bien.
Saludos, desde las montañas de Guatemala.

Calcu

  • Bytes
  • *
  • Mensajes: 12
  • Reputación: +0/-0
    • Ver Perfil
Re:Utilizar una fuente (.ttf) contenida en un .RES en vb6
« Respuesta #5 en: Marzo 16, 2023, 03:55:04 pm »
Buenas, se qué es un tema antiguo, pero el fichero del Dropbox ya no existe.

Alguien podría guiarme en el paso final?

He grabado la fuente en el archivo de recursos
Lo he grabado

La cargo con

Dim fuente as long
fuente = LoadResourceFont("bc39")   (la he llamado así en ttf1)

Pero cobein dice que hay que saber el nombre de la fuente, así que antes de:

label1.font = fuente

Tengo que cambiar eso por el nombre, pero no doy con la tecla.

Una ayudita?

Muchas gracias!

Calcu

  • Bytes
  • *
  • Mensajes: 12
  • Reputación: +0/-0
    • Ver Perfil
Re:Utilizar una fuente (.ttf) contenida en un .RES en vb6
« Respuesta #6 en: Marzo 17, 2023, 04:47:16 am »
Listo!

No hay que hacer nada más que llamar al recurso con LoadResourceFont "BC39", sin asignarlo a ninguna variable ni nada, y automáticamente la fuente queda disponible en el sistema para su uso, llamándola por su nombre completo, claro.

Gracias !

stusy_20

  • Bit
  • Mensajes: 7
  • Reputación: +0/-0
    • Ver Perfil
Re:Utilizar una fuente (.ttf) contenida en un .RES en vb6
« Respuesta #7 en: Enero 13, 2024, 07:54:19 pm »
Hola gracias por compartir podria subir algun ejemplo para entenderlo mejor gracias...