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

Windows Discussion :

application windows gui et alphabet n'ko


Sujet :

Windows

  1. #1
    Candidat au Club
    Inscrit en
    Juin 2010
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Juin 2010
    Messages : 8
    Points : 4
    Points
    4
    Par défaut application windows gui et alphabet n'ko
    Salut
    Je dois écrire une application graphique en utilisant l'alphabet n'ko (http://en.wikipedia.org/wiki/N%27ko). Je travaille sous Windows Xp avec mingw.
    Aucune police Windows Xp ne supporte cet alphabet. Par conséquent, j'ai installé la police DejaVuSans. Résultat, le site http://kanjamadi.com/ s'affiche correctement.
    J'ai écrit donc une simple application graphique (bouton, menu ...) en c++. Malheureusement, j'obtiens des carrés à la place des caractères. Quelqu'un peut-il m'expliquer comment faire pour créer une application avec cet alphabet ?
    Cordialement

    Voici quelques mots pour tester :
    ߞߎ߲߬ߠߊ߬ߛߌ߮
    ߞߎ߲߬ߠߊ߬ߦߋߙߋ߲
    ߝߢߐߘߊ߫
    ߡߐ߬ߟߐ߲߬ߡߊ

  2. #2
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 369
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 369
    Points : 41 518
    Points
    41 518
    Par défaut
    Tu peux forcer les boîtes de dialogue et les boutons à utiliser la police DejaVuSans, mais pour les menus, je ne vois pas de solution simple et qui n'affecte pas l'environnement extérieur (en gros, qui ne nécessite pas de régler dans Windows pour que les menus utilisent cette police).

    Dans ce cas, il te faudra passer par la solution compliquer: Faire les menus toi-même ou passer par une bibliothèque qui les fait et qui permet de spécifier la police.
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  3. #3
    Candidat au Club
    Inscrit en
    Juin 2010
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Juin 2010
    Messages : 8
    Points : 4
    Points
    4
    Par défaut ...
    > "Tu peux forcer les boîtes de dialogue et les boutons à utiliser la police DejaVuSans"

    Pouvez-vous me donner un bout de code qui fonctionne pour que je puisse le tester ?
    Cordialement

  4. #4
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 369
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 369
    Points : 41 518
    Points
    41 518
    Par défaut
    Je n'en ai pas sous la main, mais tu peux tester en envoyant un message WM_SETFONT aux contrôles en question (pour les vraies boîtes de dialogue, il y a un procédé différent qui affecte peut-être toute la boîte en un coup, mais je n'en ai pas les subtilités en tête.

    Pour pouvoir utiliser WM_SETFONT, tu devras d'abord charger la police en mémoire avec CreateFont().
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  5. #5
    Candidat au Club
    Inscrit en
    Juin 2010
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Juin 2010
    Messages : 8
    Points : 4
    Points
    4
    Par défaut ...
    Salut
    J'ai suivi vos conseils et j'ai modifié le code source. Il vous faudra créer un répertoire fonts dans lequel il y aura la police DejaVuSans.ttf (http://dejavu-fonts.org/wiki/Download).
    A la place des carrés, j'obtiens maintenant des caractères "bizarre"
    Donc voici le code si il ya des corrections à faire :
    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
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    // g++ -o test test.c -lgdi32
    #include <windows.h>
    
    #define UNICODE 
    #define _UNICODE
    HINSTANCE instance;
    #define ID_PUSHBUTTON_1     110
    HFONT hfont;
    
    VOID RemplieFenetrePrincipale(HWND fenetrePrincipale)
    {
    
            HWND hControle;
            // On le remplit avec un premier push button tout bête
            hControle=CreateWindow(
                TEXT("BUTTON"),
                TEXT("\u07d2\u07de\u07cf"),
                WS_CHILD|WS_VISIBLE|BS_PUSHBUTTON,
                10,10,
                100,20,
                fenetrePrincipale,
                (HMENU)ID_PUSHBUTTON_1,
                instance,
                NULL);
    		AddFontResource (TEXT("onts\\DejaVuSans.ttf"));    // modifier le chemin 
    		SendMessage(   HWND_BROADCAST,   WM_FONTCHANGE, 0, 0 );
    
    			hfont = CreateFont(0, 0, 0, 0, 0, 0, 0, 0, 
    				SYMBOL_CHARSET, 
    				OUT_DEFAULT_PRECIS, 
    				CLIP_DEFAULT_PRECIS, 
    				DEFAULT_QUALITY, 
    				DEFAULT_PITCH | FF_DECORATIVE, 
    				TEXT("DejaVuSans"));	   
    			SendMessage (hControle, WM_SETFONT, (WPARAM)hfont, TRUE);
    
    }
    
    
    VOID NotificationControle(HWND fenetrePrincipale,UINT message, WPARAM wParam, LPARAM lParam)
    {
        UINT iId=LOWORD(wParam);
        HWND hCtl=(HWND)lParam;
    
        switch(iId)
        {
            case ID_PUSHBUTTON_1:
                MessageBox(fenetrePrincipale,TEXT("Vous avez appuyé sur le premier bouton"),TEXT(""),MB_OK);
                break;
        }
    }
    
    LRESULT CALLBACK procedureFenetrePrincipale(HWND fenetrePrincipale, UINT message, WPARAM wParam, LPARAM lParam)
    {
        static HWND boutons[2] = {NULL};
    
        switch (message)
        {
            case WM_CREATE:
                RemplieFenetrePrincipale(fenetrePrincipale);
                return 0;
            case WM_COMMAND:
                NotificationControle(fenetrePrincipale,message,wParam,lParam);
                return 0;
            case WM_DESTROY:
                PostQuitMessage(0);
                return 0;
            default:
                return DefWindowProc(fenetrePrincipale,message,wParam,lParam);
        }
    }
    
    
    int WINAPI WinMain (HINSTANCE cetteInstance, HINSTANCE precedenteInstance,
                 LPSTR lignesDeCommande, int modeDAffichage)
    {
        HWND fenetrePrincipale;
        MSG message;
        WNDCLASS classeFenetre;
    
        instance = cetteInstance;
    
        classeFenetre.style = 0;
        classeFenetre.lpfnWndProc = procedureFenetrePrincipale;
        classeFenetre.cbClsExtra = 0;
        classeFenetre.cbWndExtra = 0;
        classeFenetre.hInstance = NULL;
        classeFenetre.hIcon = LoadIcon(NULL, IDI_APPLICATION);
        classeFenetre.hCursor = LoadCursor(NULL, IDC_ARROW);
        classeFenetre.hbrBackground = (HBRUSH)(1 + COLOR_BTNFACE);
        classeFenetre.lpszMenuName = NULL;
        classeFenetre.lpszClassName = TEXT("classeF");
    
    // On prévoit quand même le cas où ça échoue
        if(!RegisterClass(&classeFenetre))
            return FALSE;
    
        fenetrePrincipale=CreateWindow(
            TEXT("classeF"),
            TEXT("Ma premiere fenetre winAPI !"),
            WS_OVERLAPPEDWINDOW,
            CW_USEDEFAULT,CW_USEDEFAULT,
            130,80,
            NULL,
            NULL,
            cetteInstance,
            NULL);
    
        if (!fenetrePrincipale)
            return FALSE;
    
        ShowWindow(fenetrePrincipale,modeDAffichage);
        UpdateWindow(fenetrePrincipale);
    
        while(GetMessage(&message,NULL,0,0))
        {
            TranslateMessage(&message);
            DispatchMessage(&message);
        }
    
        return message.wParam;
    }

  6. #6
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 369
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 369
    Points : 41 518
    Points
    41 518
    Par défaut
    Attention, UNICODE et _UNICODE doivent être définis avant d'inclure windows.h.
    Préférablement en ligne de commande.

    Je n'ai pas vraiment regardé plus loin parce que c'est un peu un deal-breaker.
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

Discussions similaires

  1. Réponses: 2
    Dernier message: 03/12/2013, 10h03
  2. Fermer une application Windows
    Par telecnop dans le forum Langage
    Réponses: 20
    Dernier message: 28/06/2006, 21h15
  3. Application Windows gérant une DB ACCESS sur serveur distant
    Par paulgiot dans le forum Bases de données
    Réponses: 1
    Dernier message: 11/01/2005, 09h59
  4. [C#] [VS.NET] Réutiliser une Form d'une application windows?
    Par yannick_sch dans le forum Windows Forms
    Réponses: 4
    Dernier message: 14/10/2004, 14h28
  5. Focus sur une application Windows
    Par mixi dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 13/10/2004, 19h57

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