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

Visual C++ Discussion :

[Win32] Probleme d'affichage des chaine de caractere dans MessageBox


Sujet :

Visual C++

  1. #1
    Membre du Club
    Homme Profil pro
    Inscrit en
    Septembre 2006
    Messages
    55
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Septembre 2006
    Messages : 55
    Points : 47
    Points
    47
    Par défaut [Win32] Probleme d'affichage des chaine de caractere dans MessageBox
    Bonjour à tous,

    Je suis sous Visual Studio Express + Platform sdk.
    J'ai commencé aujourd'hui à m'interresser à l'API win32 (nombreux tuto )
    mais ma premiere fenetre avec appel d'un MessageBox à l'appui d'un touche, ne fonctionne pas correctement.

    Le titre de la fenetre et le message dans la message Box ne s'affiche pas correctement => carres à la place des lettres sauf pour la derniere (le nombre de carre ne correspond pas au nombre de caractere).

    Est-ce un pb de config de Visual ou autre chose?

  2. #2
    Rédacteur
    Avatar de nico-pyright(c)
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    6 414
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 6 414
    Points : 16 075
    Points
    16 075
    Par défaut
    ton projet est par défaut en unicode, il faudrait voir ton code pour comprendre si le problème vient de là
    Sinon, repasse en normal

  3. #3
    Membre du Club
    Homme Profil pro
    Inscrit en
    Septembre 2006
    Messages
    55
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Septembre 2006
    Messages : 55
    Points : 47
    Points
    47
    Par défaut
    J'ai essayé en changeant les propriétés de Visual, mais je ne sais pas si ce sont les bons changements. J'ai mis 'non' à toutes les options "Utilisation des fichiers reponse en UNICODE", mais aucun changement sur l'exe.

    Voici mon code :
    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
     
    #include <windows.h>
    #include <stdlib.h>
    #include <stdio.h>
     
     
     
    LRESULT CALLBACK WndProc (HWND, UINT, WPARAM, LPARAM) ;
     
    int WINAPI WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance, PSTR szCmdLine, int iCmdShow)
    {
         static CHAR szAppName[] ="Salut" ;
         HWND         hwnd ;		// handle de le fenêtre
         MSG          msg ;			// structure de message
         WNDCLASS     wndclass ;		// Classe de fenêtre
     
         wndclass.style         = NULL;			// style de la fenêtre
         wndclass.lpfnWndProc   = WndProc ;		// Nom de la procédure de fenêtre
         wndclass.cbClsExtra    = 0 ;		// réserve de la place supplémentaire dans la structure de la classe
         wndclass.cbWndExtra    = 0 ;		// réserve de la place supplémentaire dans la  structure de la fenêtre
         wndclass.hInstance     = hInstance ;			// handle de l'application
         wndclass.hIcon         = LoadIcon (NULL, IDI_APPLICATION) ;	// charge un icône pour l'application
         wndclass.hCursor       = LoadCursor (NULL, IDC_ARROW) ;		// charge style de le curseur de la souris
         wndclass.hbrBackground = (HBRUSH) GetStockObject (WHITE_BRUSH) ;	// définit la couleur de fond de l'application 
         wndclass.lpszMenuName  = NULL ;					// nom du menu à charger (ici aucun)
         wndclass.lpszClassName = szAppName ;				// nom de la classe
     
         if (!RegisterClass (&wndclass))	// enregistrement de la classe
         {
              MessageBox (NULL, "Problème!", szAppName, MB_ICONERROR) ;
              return 0 ;
         }
         hwnd = CreateWindow (		// Création de la fenêtre
             	szAppName,	              	// nom de la classe
                    "Texel", 		// titre de la fenêtre
                    WS_OVERLAPPEDWINDOW,      // style de la fenêtre
                    CW_USEDEFAULT,               // position initiale sur x
                    CW_USEDEFAULT,              // position initiale sur y
                    CW_USEDEFAULT,              // largeur initiale
                    CW_USEDEFAULT,              // hauteur initiale
                    NULL,                       // handle de la fenêtre mère ( pas de fenêtre fille donc pas de fenêtre mère)
                    NULL,                      // handle du menu de la fenêtre ( pas de menu ici donc NULL)
                    hInstance,                  // handle de l'instance (application)
                    NULL) ;                     // paramètres de création ( très souvent égal à NULL)
     
         ShowWindow (hwnd, iCmdShow) ;		// affiche la fenêtre à l'écran
         UpdateWindow (hwnd) ;			// rafraîchis le contenu de la zone cliente ( la fenêtre devient visible)
     
         while (GetMessage (&msg, NULL, 0, 0))	// lit un message de la file d'attente
         {
              TranslateMessage (&msg) ;		// traduis les msg d'événement de touche en msg de caractère
              DispatchMessage (&msg) ;		// appel la procédure de fenêtre
         }
         return msg.wParam ;
    }
     
     
    LRESULT CALLBACK WndProc (HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
    { 
        switch (message)
         {
     
           case WM_DESTROY:	// message de fermeture du programme
              PostQuitMessage (0) ;
              return 0 ;
     
           case WM_KEYDOWN:		// tape d'une touche détecter
    		 switch(wParam)
    		 {
    			case VK_LEFT:	// la touche tapée est "flèche gauche"
    				MessageBox (NULL,"Flèche gauche","Information", MB_ICONINFORMATION) ;
    				break;
    			case VK_ESCAPE:	// la touche tapée est "Echape"
    				DestroyWindow(hwnd);
    				break;
    			default:
    				break;
    		 }
    		 break;
     
         }
         return DefWindowProc (hwnd, message, wParam, lParam) ;
    }

  4. #4
    Rédacteur
    Avatar de nico-pyright(c)
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    6 414
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 6 414
    Points : 16 075
    Points
    16 075
    Par défaut
    étrange, avec un code comme ca, cela ne compilera pas en unicode, et pour le character set Use Multi-Byte Character Set, cela devrait marcher sans problème

    tu as fait un project win32 de type application ?

  5. #5
    Membre du Club
    Homme Profil pro
    Inscrit en
    Septembre 2006
    Messages
    55
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Septembre 2006
    Messages : 55
    Points : 47
    Points
    47
    Par défaut
    Lol, ok en faite c'est bien l'option de "jeu de caractere" rien avoir avec "Utilisation des fichiers reponse en UNICODE". Donc maintenant les textes s'affiche correctement (si option est sur 'non definie' ou 'Multibyte', et affiche de l'unicode si sur 'UNICODE', normal ).

    Merci bcp de ton aide, ca m'agacait de commencer l'apprentissage de (l'API win32, avec des pb de config

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

Discussions similaires

  1. probleme d'heritage sur des chaines de caracteres
    Par pikiwiki dans le forum C++
    Réponses: 3
    Dernier message: 24/05/2006, 21h01
  2. Probleme de tri de chaine de caractere...
    Par GESCOM2000 dans le forum Access
    Réponses: 12
    Dernier message: 28/12/2005, 13h43
  3. Réponses: 15
    Dernier message: 15/11/2005, 17h33
  4. []Problème d'affichage des enregistrements dans un DataReport
    Par GeniuZ dans le forum VB 6 et antérieur
    Réponses: 8
    Dernier message: 05/01/2005, 16h52
  5. [langage] Compter des chaines de caractères
    Par julfra dans le forum Langage
    Réponses: 2
    Dernier message: 26/05/2004, 17h42

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