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

 C Discussion :

Chargement des styles XP OK mais textes toujours moches


Sujet :

C

  1. #1
    Membre régulier Avatar de theclem35
    Homme Profil pro
    Technicien Réseaux & Télécommunications
    Inscrit en
    Décembre 2007
    Messages
    148
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vendée (Pays de la Loire)

    Informations professionnelles :
    Activité : Technicien Réseaux & Télécommunications
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Décembre 2007
    Messages : 148
    Points : 86
    Points
    86
    Par défaut Chargement des styles XP OK mais textes toujours moches
    Salut!

    Une petite question sans doute bete mais j'ai activé la prise en charge des styles xp pour mon application, cela fonctionne les boutons sont trop beaux

    Mais je trouve que le texte est vachement gros et moche, faut-il specifier quelques chose de spécial dans le manifest ou autre part ?

    Mon appli (moche) :


    Belle appli windows :

  2. #2
    Membre régulier Avatar de theclem35
    Homme Profil pro
    Technicien Réseaux & Télécommunications
    Inscrit en
    Décembre 2007
    Messages
    148
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vendée (Pays de la Loire)

    Informations professionnelles :
    Activité : Technicien Réseaux & Télécommunications
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Décembre 2007
    Messages : 148
    Points : 86
    Points
    86
    Par défaut
    Il semblerai qu'il faille faire ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    HFONT font=(HFONT)GetStockObject(DEFAULT_GUI_FONT);
    SelectObject(GetDC(hWndPrincipale), font);
     
    EnumChildWindows(hWndPrincipale, EnumWindowsProc, FALSE); // pour parcourir tout les controles
    Sauf que la derniere fonction me retourne une erreur :
    `EnumWindowsProc' undeclared (first use in this function)

  3. #3
    Expert éminent
    Avatar de Melem
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Janvier 2006
    Messages
    3 656
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Janvier 2006
    Messages : 3 656
    Points : 8 389
    Points
    8 389
    Par défaut
    Surtout pas GetStockObject. Utilise SystemParametersInfo(SPI_GETNONCLIENTMETRICS, ...). Cet appel te retournera une structure NONCLIENTMETRICS dont le champ lfMessageFont indiquera la police utilisée pour les textes dans les boîtes de dialogue.

    A propos de EnumWindows, il s'agit d'une fonction disponible qu'à partir de Windows 2000 (de noyau NT 5.0) donc il faut indiquer dans ton projet que tu ne cibles que les versions supérieures à 2000. Pour faire cela, tu dois définir la valeur de _WIN32_WINNT à 0x0500. Cela peut se faire avec un #define avant chaque include de windows.h (méthode vivement déconseillée) ou dans les réglages du projet (méthode conseillée). La démarche dépendra de ton compilateur ou EDI.

    Pareil pour l'utilisation de l'option SPI_GETNONCLIENTMETRICS - elle n'est disponible qu'à partir de Windows 2000 ...

  4. #4
    Membre régulier Avatar de theclem35
    Homme Profil pro
    Technicien Réseaux & Télécommunications
    Inscrit en
    Décembre 2007
    Messages
    148
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vendée (Pays de la Loire)

    Informations professionnelles :
    Activité : Technicien Réseaux & Télécommunications
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Décembre 2007
    Messages : 148
    Points : 86
    Points
    86
    Par défaut
    Ok donc voila la fin de mon main (apres la creation des fenetres) :

    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
     /* ... Début du main ....... */
     
        GetWndFont();
        EnumChildWindows(fenetrePrincipale, setWndFont, NULL);
     
        ShowWindow(fenetrePrincipale, SW_SHOW);
        UpdateWindow(fenetrePrincipale);
     
        while (GetMessage(&message, NULL, 0, 0))
        {
            TranslateMessage(&message);
            DispatchMessage(&message);
        }
     
        return message.wParam;
    } // FIn du MAIN
     
    void GetWndFont() 
    { 
            NONCLIENTMETRICS info; 
            info.cbSize = sizeof(info); 
            SystemParametersInfo(SPI_GETNONCLIENTMETRICS, sizeof(info), &info, 0); 
            hGlobalFont = CreateFontIndirect(&info.lfMessageFont); 
    }
     
    BOOL CALLBACK setWndFont(HWND itemHwnd, LPARAM lParam) 
    { 
            SendMessage(itemHwnd, WM_SETFONT, (WPARAM)hGlobalFont, MAKELPARAM(FALSE, 0)); 
            return true; 
    }
    Et suite à ca j'ai 2 erreurs :
    - Dans le main : [Warning] passing arg 3 of `EnumChildWindows' makes integer from pointer without a cast
    - Dans ma fonction setWndFont : `true' undeclared (first use in this function)

    Sinon j'utilise devcpp (oui personne n'est parfait ) et je ne vois pas exactement ou renseigner le _WIN32_WINNT 0x0500 autrement qu'avec des #define !

  5. #5
    Membre actif Avatar de quetzacoatl
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    168
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 168
    Points : 223
    Points
    223
    Par défaut
    Le prototype de la fonction EnumChildWindows:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    BOOL WINAPI EnumChildWindows(
      __in_opt  HWND hWndParent,
      __in      WNDENUMPROC lpEnumFunc,
      __in      LPARAM lParam
    );
    tu dois mettre en 3e argument un __in

    Enfin ton probleme avec la variable BOOL, c'est qu'il faut mettre TRUE(en majuscules)

  6. #6
    Membre régulier Avatar de theclem35
    Homme Profil pro
    Technicien Réseaux & Télécommunications
    Inscrit en
    Décembre 2007
    Messages
    148
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vendée (Pays de la Loire)

    Informations professionnelles :
    Activité : Technicien Réseaux & Télécommunications
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Décembre 2007
    Messages : 148
    Points : 86
    Points
    86
    Par défaut
    Pour le true c'est bon, pour le reste ca ne fonctionne toujours pas.

    Il me dit que hGlobalFont n'est pas defini.

  7. #7
    Membre régulier Avatar de theclem35
    Homme Profil pro
    Technicien Réseaux & Télécommunications
    Inscrit en
    Décembre 2007
    Messages
    148
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vendée (Pays de la Loire)

    Informations professionnelles :
    Activité : Technicien Réseaux & Télécommunications
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Décembre 2007
    Messages : 148
    Points : 86
    Points
    86
    Par défaut
    Bon après réflexion, il n'y a plus d'erreur mais je ne suis pas sur d'avoir fait les choses dans le bon ordre.

    1/ Je cree mes deux fenetres
    2/ Je recupere la police systeme -> GetWndFont()
    3/ Je l'envoie a tous mes controles -> EnumChildWindows()

    Voici le code ci-dessous, mais mes boutons ont toujours la meme apparence toute moche!

    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
    39
    40
    41
    42
    43
    44
    45
    46
    /* Début du main, les classes etc.... */
     
           fenetrePrincipale = CreateWindow(
                                "classeFenetrePrincipale", "Jeu",
                                WS_VISIBLE | WS_SYSMENU | WS_MINIMIZEBOX, CW_USEDEFAULT, CW_USEDEFAULT,
                                280, 350,
                                NULL, NULL, cetteInstance, NULL);
        if (!fenetrePrincipale) return FALSE;
     
        fenetreHebergerPartie = CreateWindow(
                                    "classeFenetreHebergerPartie", "Heberger une partie ...",
                                    WS_SYSMENU | WS_MINIMIZEBOX, CW_USEDEFAULT, CW_USEDEFAULT,
                                    457, 340,
                                    fenetrePrincipale, NULL, cetteInstance, NULL);
        if (!fenetreHebergerPartie) return FALSE;
     
        GetWndFont(hGlobalFont);
        EnumChildWindows(fenetrePrincipale, setWndFont, 0);
     
     
        ShowWindow(fenetrePrincipale, SW_SHOW);
        UpdateWindow(fenetrePrincipale);
     
        while (GetMessage(&message, NULL, 0, 0))
        {
            TranslateMessage(&message);
            DispatchMessage(&message);
        }
     
        return message.wParam;
    }
     
    HFONT GetWndFont(HFONT hGlobalFont) 
    { 
            NONCLIENTMETRICS info; 
            info.cbSize = sizeof(info); 
            SystemParametersInfo(SPI_GETNONCLIENTMETRICS, sizeof(info), &info, 0); 
            hGlobalFont = CreateFontIndirect(&info.lfMessageFont); 
            return hGlobalFont;
    }
     
    BOOL CALLBACK setWndFont(HWND itemHwnd, LPARAM lParam) 
    { 
            SendMessage(itemHwnd, WM_SETFONT, (WPARAM)hGlobalFont, MAKELPARAM(FALSE, 0)); 
            return TRUE; 
    }

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

Discussions similaires

  1. chargement des données à partir d'un fichier text
    Par hazem2410 dans le forum Access
    Réponses: 1
    Dernier message: 05/03/2013, 10h02
  2. [WD-2003] Table des matières + style dans zone de texte
    Par mikael2235 dans le forum Word
    Réponses: 3
    Dernier message: 06/11/2011, 20h10
  3. Un éditeur de texte web style FCK editor mais qu'avec les boutons principaux
    Par Marc22 dans le forum Général Conception Web
    Réponses: 3
    Dernier message: 25/05/2010, 09h45
  4. Des styles pour le texte et les liens dans la meme div?
    Par Donkey' Shot dans le forum Mise en page CSS
    Réponses: 4
    Dernier message: 26/01/2005, 20h03

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