Dialogex

galax98 Messages postés 49 Date d'inscription mardi 27 mars 2007 Statut Membre Dernière intervention 29 juin 2020 - 4 nov. 2010 à 15:05
galax98 Messages postés 49 Date d'inscription mardi 27 mars 2007 Statut Membre Dernière intervention 29 juin 2020 - 4 nov. 2010 à 20:47
Bonjour
Surement une question tres basique , mais ca fait pas mal de temps que je cherche sans succes.
J'ouvre une boite de dialogue definie avec DIALOGEX dans mes ressources, pour permettre à l'utilisatuer de rentrer un nombre de 8 chiffres.
Tout se passe bien, sauf que le curseur n'apparait pas automatiquement dans la zone de saisie, il faut cliquer à l'interieur pour cela. Est il possible de faire apparaitre le curseur dès l'ouverture de la box, ce qui permettrait à l'utilisateur d'entrer directement les chiffres sans avoir à cliquer sur la zone de saisie au depart ?
Merci

8 réponses

mogwai93 Messages postés 362 Date d'inscription mardi 31 décembre 2002 Statut Membre Dernière intervention 4 novembre 2023
4 nov. 2010 à 15:31
tu as essayé SetFocus ?
0
galax98 Messages postés 49 Date d'inscription mardi 27 mars 2007 Statut Membre Dernière intervention 29 juin 2020
4 nov. 2010 à 15:41
SetFocus que je lancerais à quel moment ?
Actuellement je lance ma box avec la fonction DialogBox(....)
0
galax98 Messages postés 49 Date d'inscription mardi 27 mars 2007 Statut Membre Dernière intervention 29 juin 2020
4 nov. 2010 à 15:46
Oui, SetFocus marche très bien.
Merci !
0
galax98 Messages postés 49 Date d'inscription mardi 27 mars 2007 Statut Membre Dernière intervention 29 juin 2020
4 nov. 2010 à 16:13
Non, en fait ya un pb. Si je mets le SetFocus au debut de ma fonction CALLBACK, le curseur s'affiche bien dès le depart, je peux rentrer mes chiffres mais alors je ne peux plus cliquer sur le "OK"
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
4 nov. 2010 à 17:52
ON_INITDIALOG retourne 1 ???

ciao...
BruNews, MVP VC++
0
galax98 Messages postés 49 Date d'inscription mardi 27 mars 2007 Statut Membre Dernière intervention 29 juin 2020
4 nov. 2010 à 18:00
Merci,
Je ne sais pas exactement ce que tu as voulu me dire, mais c'est sans doute proche de ceci qui fonctionne finalement :

case WM_INITDIALOG : if(GetDlgCtrlID((HWND) wParam)!=IDC1) {
SetFocus(GetDlgItem(Dlg,IDC1));
return FALSE; }
return TRUE;
0
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
4 nov. 2010 à 20:31
OUST tout cela.

case WM_INITDIALOG:
// CODE D'INIT SI BESOIN
return 1;

Le focus dans une dialogBox ne se gère pas à coups de SetFocus(). Qaund la dialog apparaitra en fin de WM_INITDIALOG, le focus sera normalement sur le 1er controle dans l'ordre de tabulation défini au moment de la conception de la dialog.

Pendant déroulement du code suite à action utilisateur ou autre, si besoin de placer le focus où on veut, c'est ainsi:
Sur un controle précis:
PostMessage(hdlg, WM_NEXTDLGCTL, (WPARAM) hCtrl, 1);
Controle suivant:
PostMessage(hdlg, WM_NEXTDLGCTL, 0, 0);
Controle précédent:
PostMessage(hdlg, WM_NEXTDLGCTL, 1, 0);

ciao...
BruNews, MVP VC++
0
galax98 Messages postés 49 Date d'inscription mardi 27 mars 2007 Statut Membre Dernière intervention 29 juin 2020
4 nov. 2010 à 20:47
Merci,
en repondant beaucoup plus largement à la question, ta réponse ma fait réaliser que le curseur n'apparaissait pas car ma zone de saisie n'etait tout simplement pas définie en premier ....
merci encore
0
Rejoignez-nous