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 :
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 ...
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; }
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.
Partager