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

MFC Discussion :

Impossible de setter le texte d'un contrôle static


Sujet :

MFC

  1. #1
    Membre averti
    Inscrit en
    Mars 2008
    Messages
    16
    Détails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 16
    Par défaut Impossible de setter le texte d'un contrôle static
    Bonjour,

    Je cherche a mettre a jour le texte d'un contrôle static, contenu dans une fenetre créee à l'intérieur d'un thread.

    J'envoie un message perso à cette fenêtre WM_SET_TEXT. Je sais qu'il existe un WM_SETTEXT mais je ne l'utilise volontairement pas.

    Le message arrive bien, grâce à la ligne de debug "msg recu\n" je vois qu'il est traité dans le bon case. Seulement le setWindowText que j'applique sur le HWND de mon contrôle n'a aucun effet. Savez-vous pourquoi ???

    Ci-dessous le code qui traite les messages qui arrivent à la fenêtre :

    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
    LRESULT CALLBACK msgProcess(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam)
    {
    static HWND hLabel;
     
       switch(msg)
       {  
            case WM_SET_TEXT:
                printf("msg recu\n");
                SetWindowText(hLabel, "aaaaaaaaaaaaaaaaaa");
                printf("Error : %d\n", GetLastError());
     
            case WM_CREATE:
     
                hLabel = CreateWindow("STATIC",
                                   "bbbbbbbb",
                                   WS_CHILD | WS_VISIBLE | SS_LEFT,
                                   0, 0, 500, 400,
                                   hwnd, NULL,
                                   (HINSTANCE)GetModuleHandle(NULL),
                                   NULL);
     
                if (hLabel == NULL)
                {
                    printf ("null, pb pb\n");
                }
     
     
            break;
     
            case WM_CLOSE:
                printf("wm_close\n");
                DestroyWindow(hwnd);
            break;
     
            case WM_DESTROY:
                printf("wm_destroy\n");
                PostQuitMessage(0);
            break;
     
            default:
                return DefWindowProc(hwnd, msg, wParam, lParam);
       }
       return 0;
    }
    Je suis sûr que le contrôle static se créer correctement. Il se place ben dans la fenêtre et je vois le message par défaut "bbbbbbb" dedans. Par contre impossible de le changer ...
    J'ai essayé des UpdateWindow, InvalidateRect, diverses fonctions pour rafraichir la fenêtre, rien n'y fait.
    D'autre part le GetLastError me renvoie 0, donc apparemment le setWindowText n'échoue pas ....

    Merci de votre aide.

  2. #2
    Membre averti
    Inscrit en
    Mars 2008
    Messages
    16
    Détails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 16
    Par défaut
    Bon eh bien solution trouvée, honte à moi, j'ai oublié le break du case WM_SET_TEXT, du coup a chaque fois qu'il passait dedans il passait également dans WM_CREATE, qui recréait le contrôle.

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

Discussions similaires

  1. Réponses: 6
    Dernier message: 14/06/2007, 12h13
  2. Réponses: 2
    Dernier message: 28/04/2006, 17h51
  3. [FLASH MX] Impossible d'afficher le texte
    Par unix27 dans le forum Flash
    Réponses: 4
    Dernier message: 20/04/2006, 13h28
  4. [MFC]Impossible de changer le texte d'un LABEL
    Par jlassira dans le forum MFC
    Réponses: 7
    Dernier message: 01/03/2006, 16h39
  5. Réponses: 19
    Dernier message: 10/05/2005, 10h44

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