Prob de portée des EditBox ou autres

cs_Goba Messages postés 1 Date d'inscription jeudi 27 juin 2002 Statut Membre Dernière intervention 7 octobre 2002 - 7 oct. 2002 à 23:59
cs_llo Messages postés 45 Date d'inscription jeudi 10 octobre 2002 Statut Membre Dernière intervention 6 décembre 2002 - 16 oct. 2002 à 09:13
Bon en gros, je crée ma fenetre principale puis plusieurs EditBox dans la fonction WinMain, et je voudrais que quand on modifie une des editbox, ca affiche la nouvelle valeur dans une autre editbox.

Pour ca je vais dans WndProc, je sais faire dans la theorie (avec GetWindowText, SetWindowText ... etc), mais les editbox sont pas visibles dans WndProc. En faite je peux voir que la fenetre principale qui est passée en parametre. Help :)

2 réponses

jcecchi Messages postés 117 Date d'inscription samedi 12 janvier 2002 Statut Membre Dernière intervention 14 janvier 2003 3
8 oct. 2002 à 11:28
salut,

le mieux est de creer les editbox dans WndProc.
Exemple :

LRESULT APIENTRY WndProc(......)
{
static HWND edit1;
static HWND edit2;

switch(msg)
{
case WM_CREATE :
//Creation des editbox
....
}
.....
}

Et comme ca les editbox sont connues.
0
cs_llo Messages postés 45 Date d'inscription jeudi 10 octobre 2002 Statut Membre Dernière intervention 6 décembre 2002
16 oct. 2002 à 09:13
salut,
tu as 2 autres possibilités:
- la 1ère : après la création des zones d'édition, tu peux les sous-classer (ie : détourner la gestion des messages )... Je ne te le conseille que si tu maîtrises...
- la seconde est d'intercepter le message WM_COMMAND dans la gestion des messages de la fenêtre parent :

Au passage, utilise les crackers de message pour plus de lisibilité

LRESULT CALLBACK ExempleWndProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam)
{
switch (msg)
{
// craqueur de message => gère les case
HANDLE_MSG(hWnd, WM_COMMAND, Exemple_OnCommand);
default:
return DefWindowProc(hWnd, msg, wParam, lParam);
}
}

.... WM_COMMAND :

void Exemple_OnCommand(HWND hWnd, int id, HWND hwndCtl, UINT codeNotify)
{
...
switch(id){
// sur envoie d'un message à la zone d'édition
case CM_EDIT:
switch (codeNotify){
case EN_KILLFOCUS:
MessageBox(hWnd, (LPSTR)"perte du focus", "Message", MB_OK|MB_ICONSTOP);
break;
...
}

Dans l'id tu as l'identifiant du contrôle, et dans la notification, le message ayant généré le WM_COMMAND.....

Voilà tu devrais t'en sortir...
shuss
l'lo
0
Rejoignez-nous