OVH Cloud OVH Cloud

Problème avec dialogbox de dialogbox

11 réponses
Avatar
Roger
Bonjour,

J'ai une première dialogbox (dialogbox1) modale décrite dans le fichier
ressource que je lance par la fonction dialogbox avec sa propre callback,
dans cette callback (callback1) je n'ai aucun problème pour lire le contenu
de mes contrôles : edittext par GetDlgItemText ou listbox par
SendMessage(clesurcontrole, LB_GETTEXT, ...) etc. Toujours dans cette
callback lors de l'appui sur un bouton, je lance une 2ème dialogbox
(dialogbox2) par une deuxième fonction dialogbox, celle-ci est encore modale
décrite séparément dans le même fichier ressource et elle dispose de sa
propre callback (callback2). Dans cette callback2 de cette dialogbox2 je
récupère correctement la main lors du clic sur n'importe quel bouton, par
contre j'ai un problème avec les contrôles edittext, je n'arrive pas lorsque
je clique sur un bouton à lire le contenu des contrôles edittext, le
GetDlgItemText avec le handle de la fenêtre d'origine ne donne rien, le
GetDlgItem() pour récupérer avec la clé de la fenêtre d'origine un handle
sur le contrôle afin d'utiliser SendMessage(clesurcontrole, LB_GETTEXT,...)
ne donne rien non plus. Je pensais qu'en fait c'était parce que je ne peux
plus utiliser la clé de la fenêtre d'origine pour trouver les handle sur les
contrôles ce qui m'a amené à chercher une autre clé de fenêtre avec
nvellecle=GetWindow(cledorigine, GW_XXX) et ensuite à essayer ces nouvelles
clés pour trouver un handle sur mes contrôles, mais rien n'y fait !!

Help please.

Thanks

1 réponse

1 2
Avatar
Serge Paccalin
Le Sun, 10 Apr 2011 10:08:36 +0200, Roger a écrit
(dans <news:4da164e6$0$7695$, posté
dans fr.comp.os.ms-windows.programmation) :

********************************************************************
Il y a une chose que je ne comprends pas. À te lire, j'ai l'impression
que tu appelles toi-même la DialogProc et que tu hésites/hésitais sur le
paramètre hWnd à lui fournir. A priori, on ne l'appelle jamais soi-même,
c'est le système qui s'en charge, au gré des événements à traiter. À
quelle occasion appelles-tu la DialogProc ?
******************************************************************


Non, je n'appelle pas moi-même la WindowProc, ni la DialogProc.
Prenons d'abord le cas de CreateWindow, cette fonction fourni un HWND,
je mets en place ensuite la callback WindowProc appelée par Windows pour le
traitement des messages. Dans les paramètres de cette fonction, il y a un
HWND, je pensais, à tort, qu'il fallait que je mette comme paramètre HWND
celui qui m'avait été fourni par la CreateWindow.



Cette phrase n'a aucun sens. On ne met de paramètre que quand on appelle
une fonction :

HWND hWnd = CreateWindow(...);
HWND hDlg = CreateDialog(...);

Machin(hDlg); // Là, je mets hDlg en paramètre.

--
___________
_/ _ _`_`_`_) Serge PACCALIN -- sp ad mailclub.net
_L_) Il faut donc que les hommes commencent
-'(__) par n'être pas fanatiques pour mériter
_/___(_) la tolérance. -- Voltaire, 1763
1 2