IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VB 6 et antérieur Discussion :

installer font (police de caractère)en VB


Sujet :

VB 6 et antérieur

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre très actif
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    1 047
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 1 047
    Par défaut installer font (police de caractère)en VB
    Bonjour,

    Je suis confronté à un problème je dois utiliser des fonts que j'ai créé pour une application ACCESS. Ma question est de savoir comment faire pour installer les fonts en VB.
    Quelqu'un aurait il une idée?

    Merci

  2. #2
    Expert confirmé
    Avatar de ProgElecT
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2004
    Messages
    6 132
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 69
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Décembre 2004
    Messages : 6 132
    Par défaut
    bonjour

    je suppose que cette police ce trouve dans un fichier, moi je le met dans le dossier "C:\WINDOWS\Fonts".
    Une autre façon,
    quand on ouvre ce dossier par le menu "Fichier --> Instaler une nouvelle police" on peut lui passer le fichier.

    Si une police est utilisé dans le projet, lors de l'empaquetage & déploiement
    il suffit de ne pas oublier de rajouter ce fichier de police, pour qu'il soit inclus de le Cab.

    INFOS
    Le fichier créer doit repondre a une structure bien pécise, le meilleur moyen est de le fabriquer avec eudcedit.exe, qui ce trouve dans "C:\WINDOWS\system32", (sous XP)
    :whistle:pourquoi pas, pour remercier, un :plusser: pour celui/ceux qui vous ont dépannés.
    saut de ligne
    OOOOOOOOO👉 → → Ma page perso sur DVP ← ← 👈

  3. #3
    Membre très actif
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    1 047
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 1 047
    Par défaut
    Bonjour,
    Je les met déja dans Font mais il faut en plus les déclarer avec je crois un fichier .FOT ce qui indique au système qu'il y a une nouvelle polic de caractère. si on ne déclare pas cela la nouvelle font ne sera prise en compte uniquement que lorsque l'on ira uvrir le fichier .TTF
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    Private Declare Function AddFontResource Lib "gdi32" Alias "AddFontResourceA" (ByVal lpFileName As String) As Long
    Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long
    Private Declare Function CreateScalableFontResource Lib "gdi32" Alias "CreateScalableFontResourceA" (ByVal fHidden As Long, ByVal lpszResourceFile As String, ByVal lpszFontFile As String, ByVal lpszCurrentPath As String) As Long
     
    Function SaveFonts(lpszResourceFile As String, lpszFontFile As String, lpszCurrentPath As String)
     
     
     
        ''res = AddFontResource(nomFont)   'Installation de la police
        fHidden = 0 '(police visible par toutes les applications)
        ''lpszResourceFile = "c:\windows\fonts\Mapolice.fot"
        ''lpszFontFile = "Mapolice.ttf"
        ''lpszCurrentPath = "c:\windows\fonts"
     
        Resultat = CreateScalableFontResource(0, lpszResourceFile, lpszFontFile, lpszCurrentPath)
    ''Vérifier que Resultat est différent de 0.
     
    ''3) Ajouter la ressource au système
     
        res = AddFontResource(lpszResourceFile)
    ''Vérifier que NbFontesInstallees est différent de 0.
     
     
     
        If res > 0 Then 'Test de l'install de la police
            SendMessage HWND_BROADCAST, WM_FONTCHANGE, 0, 0 'L'install à réussit, on valide la police dans les registres
            msg = "Police : " & lpszFontFile & " à été installée" & Chr(13)   'Message de confirmation d'ajout
        Else
            msg = "Police : " & lpszFontFile & " n'a pas été installée" & Chr(13)   'Message comme quoi ce n'est pas installé
        End If
     
        MsgBox msg  'Affichage du rapport
    End Function
    le pb c'est que ce programme ne fonctionne pas toutes les fois suivant le système d'exploitation.

  4. #4
    Expert confirmé
    Avatar de ThierryAIM
    Homme Profil pro
    Inscrit en
    Septembre 2002
    Messages
    3 673
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2002
    Messages : 3 673
    Par défaut
    tu veux absolument le faire en VB ?

    Sinon qques lignes de script Inno Setup et le tour est joué :
    Code x : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    ;Installateur de Polices Windows
    
    [Setup]
    AppName=Font Installer
    AppVerName=Font Installer 1.0
    CreateAppDir=false
    
    [Languages]
    Name: en; MessagesFile: compiler:Default.isl;
    Name: fr; MessagesFile: compiler:Languages\French.isl;
    
    [Files]
    ; [Fonts]
    Source: C:\windows\Fonts\Digirtu_.ttf; DestDir: {fonts}; FontInstall: Digital Readout Thick Upright; Flags: onlyifdoesntexist uninsneveruninstall

  5. #5
    Membre éclairé
    Avatar de mortalino
    Inscrit en
    Janvier 2007
    Messages
    72
    Détails du profil
    Informations personnelles :
    Âge : 42

    Informations forums :
    Inscription : Janvier 2007
    Messages : 72
    Par défaut
    Salut,

    tu as aussi la possibilité d'énumérer les police par une Api : EnumFonts

    Dans un Module :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    Option Explicit
     
    Private Const LF_FACESIZE   As Long = 32&
     
    Private Type LOGFONT
        lfHeight                As Long
        lfWidth                 As Long
        lfEscapement            As Long
        lfOrientation           As Long
        lfWeight                As Long
        lfItalic                As Byte
        lfUnderline             As Byte
        lfStrikeOut             As Byte
        lfCharSet               As Byte
        lfOutPrecision          As Byte
        lfClipPrecision         As Byte
        lfQuality               As Byte
        lfPitchAndFamily        As Byte
        lfFaceName(LF_FACESIZE) As Byte
    End Type
     
    Public Declare Function EnumFonts Lib "gdi32" Alias "EnumFontsA" (ByVal hDC As Long, ByVal lpsz As String, ByVal lpFontEnumProc As Long, ByVal lParam As Long) As Long
    Private Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" (pDst As Any, pSrc As Any, ByVal ByteLen As Long)
     
     
    Public Function EnumFontProc(ByVal lplf As Long, ByVal lptm As Long, ByVal dwType As Long, ByVal lpData As Long) As Long
        Dim LF          As LOGFONT
        Dim ZeroPos     As Long
        Dim FontName    As String
     
        Call CopyMemory(LF, ByVal lplf, LenB(LF))
        FontName = StrConv(LF.lfFaceName, vbUnicode)
        ZeroPos = InStr(1, FontName, Chr$(0))
        If ZeroPos > 0 Then FontName = Left$(FontName, ZeroPos - 1
    ' *** Attention ici : ***
        NomForm.NomCombo.AddItem FontName
        EnumFontProc = 1
    End Function
    Pour l'appeler :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Call EnumFonts(NomForm.hdc, vbNullString, AddressOf EnumFontProc, 0&)
    @++

  6. #6
    Membre très actif
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    1 047
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 1 047
    Par défaut
    Bonjour désolé pour le retard
    Merci pour vos réponses j'ai en gros essayé l'ensemble qui fonctionnait plus ou moins bien
    J'ai utilisé la solution de Thierry Aim qui semble fonctionner pour la plupart des ordinateurs.

    Merci encore

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 0
    Dernier message: 24/09/2012, 15h47
  2. Travail avec des Fonts / police de caractère
    Par zayann dans le forum VB.NET
    Réponses: 4
    Dernier message: 05/02/2010, 09h00
  3. Lister les polices de caractères et leurs fontes
    Par habilité dans le forum Tcl/Tk
    Réponses: 15
    Dernier message: 27/04/2008, 17h06
  4. installer nouvelle police de caractère pour open office
    Par Biosox dans le forum Applications et environnements graphiques
    Réponses: 2
    Dernier message: 01/08/2007, 00h42
  5. [Font] Installer une police
    Par GLDavid dans le forum Windows XP
    Réponses: 3
    Dernier message: 02/06/2006, 11h27

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo