julien_boss
Messages postés165Date d'inscriptionsamedi 4 juin 2005StatutMembreDernière intervention24 octobre 2007
-
3 mars 2007 à 12:33
julien_boss
Messages postés165Date d'inscriptionsamedi 4 juin 2005StatutMembreDernière intervention24 octobre 2007
-
4 mars 2007 à 22:55
Bonjour, je sais que la question a déjà été posée mais la réponse n'était pas présente ^_^.
Donc je la repose : j'ai créé des boutons de classe "edit" (qui ne sont pas dans une dialogbox) à l'aide de CreateWindowEx() et je voudrais que la tabulation marche entre ces boutons (qu'on passe de l'un à l'autre en appuyant sur la touche tab du clavier, pour etre tres clair).
J'ai lu qu'il fallait mettre le style WS_TABSTOP sur ces boutons mais ca n'a rien donné, ou alors je m'y prends mal. J'ai aussi lu qqch sur le style WS_GROUP, mais je n'ai pas bien compris sa fonction.
Donc voilà si qqun pouvait me donner un exemple, ou un lien vers une source (que je n'ai pas trouvé), je lui en serait tres reconnaissant (a)
racpp
Messages postés1910Date d'inscriptionvendredi 18 juin 2004StatutModérateurDernière intervention14 novembre 201415 4 mars 2007 à 11:14
Salut,
Pour faire fonctionner la touche de tabulation dans une fenêtre, il faut que la boucle des messages ressemble à ceci:
MSG msg;
while (GetMessage(&msg, 0, 0, 0) )
{
if (!IsDialogMessage(hwnd, &msg) )
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
}
Le style WS_GROUP doit être appliqué seulement au premier controle d'un groupe de controles. Cela permet de créer plusieurs groupes pour la touche tab. Ainsi, le focus ne quittera pas le groupe du controle ayant le focus.
julien_boss
Messages postés165Date d'inscriptionsamedi 4 juin 2005StatutMembreDernière intervention24 octobre 2007 4 mars 2007 à 12:53
Merci beaucoup ca marche! Seulement je fais une sorte de formulaire, et j'aimerais que quand je me trouve dans un bouton de classe "edit" et que j'appuie sur la touche entrer, le bouton "OK", de classe "button", soit déclenché. Comment faire alors ?
Si tu pouvais aussi me donner des explications à ma boucle des messages, qui ressemble donc à ca :
while (GetMessage (&messages, NULL, 0, 0))
{
if (!IsDialogMessage(hZoneRecherche, &messages) )
{
TranslateMessage(&messages);
DispatchMessage(&messages);
}
}
hZoneRecherche est un handle sur une fenetre qui n'est pas la fenetre principale de l'application, je m'attendais donc à ce que certains messages ne soient pas envoyés. Seulement tout marche, comment ca se fait ?
racpp
Messages postés1910Date d'inscriptionvendredi 18 juin 2004StatutModérateurDernière intervention14 novembre 201415 4 mars 2007 à 14:04
Il te faudra sous-classer tes Edits pour intercepter le message WM_KEYDOWN avec VK_RETURN contenu dans wParam. Tu enverras ensuite le message BM_CLICK au bouton voulu. Une seule fonction de sous-classement suffit pour tous les Edits. J'ai plusieurs fois répondu à ce genre de question. Cherche dans le forum du site.
Pour les explications sur IsDialogMessage() voici sa page MSDN : IsDialogMessage()
julien_boss
Messages postés165Date d'inscriptionsamedi 4 juin 2005StatutMembreDernière intervention24 octobre 2007 4 mars 2007 à 22:55
D'accord, je voulais éviter de sous classer mais bon s'il n'y a pas de style existant permettant de faire ce que je souhaite, je n'ai pas le choix. Merci en tout cas !
ps : je n'ai pas du tout trouvé de sujets à réponses incluses sur ce forum >_<