begin process at 2012 05 30 10:04:27
  Trouver un code source :
 
dans
 
Accueil > Forum > 

C

 > 

Windows

 > 

GUI

 > 

Touche Tab inopérationelle


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Touche Tab inopérationelle

mardi 5 septembre 2006 à 03:35:23 | Touche Tab inopérationelle

Ziman

Bonjour,

depuis que je programme avec l'API WIN32 en C, j'ai remarqué, que la touche tab de mes programmes ne fonctionne pas. Par exemple, je suis dans un Edit, je veux passer dans un autre, j'appuie sur Tab, j'entend juste un son et le focus reste sur le meme edit. Un autre problème un peu lié est le fait que bien que j'ajoute le style BS_DEFPUSHBUTTON a un de mes button, j'ai beau appuyé sur Entrée, rien ne se passe.

Comment cela se fait-il ?

Merci d'avances pour vos réponses.

Apprendre le VB6
mardi 5 septembre 2006 à 05:45:05 | Re : Touche Tab inopérationelle

racpp

Administrateur CodeS-SourceS
Salut,
Je suppose que tu utilises une boite de dialogue. Dans ce cas c'est simple, il suffit de donner à chaque controle le style WS_TABSTOP.
Pour le style BS_DEFPUSHBUTTON, j'avais rencontré ce problème il y'a longtemps déjà. Il parait qu'il ne sert à rien de l'ajouter. En effet, malgré ce style, la boite de dialogue ne le reconnait pas. Il suffit donc de le lui signaler avec le message DM_SETDEFID. Ce  message permet de changer l'identificateur du controle par défaut agissant à la pression de la touche ENTREE.
Voici un petit exemple:
HWND hBouton;
hBouton=CreateWindowEx(0, "Button", "Ok", WS_VISIBLE | WS_CHILD | WS_TABSTOP , 20, 20, 60, 20, hDlg, (HMENU)1000, 0, 0);
SendMessage(hDlg, DM_SETDEFID ,1000,0);

Notre bouton à comme identificateur 1000. C'est ce dernier qui sera envoyé à notre boite de dialogue via le message DM_SETDEFID.
A noter que je n'ai pas mis le style BS_DEFPUSHBUTTON pendant la création du bouton car c'est inutile.


mardi 5 septembre 2006 à 15:59:04 | Re : Touche Tab inopérationelle

Ziman

Salut,

il ne s'agit pas d'une DialogBox, il s'agit d'une fenetre principale. J'ai quand meme essayé ce que tu m'as dit pour la touche tab mais cela ne fonctionne pas.

Ensuite pour le bouton, j'ai mis le message, il l'encadre de la bordure noire pour montrer qu'il est par défaut celui qui s'enfoncera à la pression de la touche Entrée, mais rien ne se passe quand j'appuye sur entré alors que l'Edit a le focus ... J'entend un son système (un chti doooooong) mais rien d'autre ...

Apprendre le VB6
mardi 5 septembre 2006 à 17:19:21 | Re : Touche Tab inopérationelle

racpp

Administrateur CodeS-SourceS
Bonjour,
Dans ce cas il suffit de modifier la boucle des messages dans ta winmain pour qu'elle ressemble à ceci:
    MSG msg;
    while (GetMessage(&msg, 0, 0, 0) )
    {
        if (!IsDialogMessage(hwnd, &msg) )
        {
        TranslateMessage(&msg);
        DispatchMessage(&msg);
        }
    }

Ceci permet le fonctionnement des tabulations dans une fenêtre mais ne résoud pas le problème du bouton par défaut. Personnellement je n'ai jamais eu besoin d'utiliser un tel bouton dans mes fenêtres. Si je trouve une solution pour ce cas spécial, je te la montrerai.

mardi 5 septembre 2006 à 17:53:24 | Re : Touche Tab inopérationelle

racpp

Administrateur CodeS-SourceS
Réponse acceptée !
Pour le bouton par défaut, je viens de trouver une solution très simple. Le bouton doit avoir le style BS_DEFPUSHBUTTON et avoir IDOK comme identificateur. La boucle des messages modifiée comme précisé plus haut est indispensable:
hBouton=CreateWindowEx(0, "Button", "Ok", WS_VISIBLE | WS_CHILD | BS_DEFPUSHBUTTON  | WS_TABSTOP , 20, 20, 60, 20, hDlg, (HMENU)IDOK, 0, 0);
Je viens de faire des tests, ça marche nickel.

mercredi 6 septembre 2006 à 01:19:36 | Re : Touche Tab inopérationelle

Ziman

Ah voilà, ca fonctionne maintenant, je me suis un peu renseigné sur msdn sur IsDialogMessage que tu m'as indiqué et j'ai compris pourquoi tu fais cela.

Merci beaucoup de ton aide :p

Apprendre le VB6


Cette discussion est classée dans : edit, tab, touche, inopérationelle


Répondre à ce message

Sujets en rapport avec ce message

probleme avec la fonction GetAsyncKeyState() [ par aardman ] Bonjours,Je débute dans le c, et j'ai un petit probleme avec cette fonction.Je n'arrive pas a la faire fonctionner avec un int comme argument. Par exe Win32 simulation de touche du clavier [ par zibo3 ] Bonjour, j'ai un petit souci, j'aimerai pouvoir simuler l'appuie sur la touche TAB mais avec la touche SHIFT appuyé.Je sais que je dois envoyé un évén Edit_box et la touche Enter [ par by_rabbit_08 ] Bonjour!Je sais que cette question a été posée plusieurs fois, mais pas exactement comme je l'aimerais, et malgré tout ce que j'ai lu, je n'arrive pas C++ win32 - perte de la touche TAB pour changement de zone au sein d'un Dialog. EDIT multiline. [ par magic_Nono ] Bonjourje souhaite dynamiquement créer une boite sans ressourcegérant la navigation entre zone par touche TAB/ Maj+TABTout fonctionne bien tant qu'on Edit Box + Default Button [ par Manson ] Salut,j'avais trouve sur msdn comment faire mais je ne le retrouve pas. J'aimerai associer une fonction a une touche dans un editbox. Par exemple dire Utilisation de tab dans une appli win32 [ par zibo3 ] Bonjour, j'utilise le code suivant dans ma fenêtre pour créer deux champs Edit et j'aimerai naviguer à l'aide de la touche Tab mias mon ordinateur eme Sortie d'un contrôle EDIT multiligne. [ par mohdaef ] Bonjour.J'ai un problème de sortie d'un edit multiligne, je m'explique. Dans un fenêtre j'ai plusieur contrôle edit dont un qui possède l'option ES_MU Détection de touche dans un edit [ par Brice25 ] Bonjour à tous, je fais appel à vous car j'ai besoin d'aide pour mon projet de BTS. Je développe un appli sous C++ Builder 5 pro. J'aimerais détecter Touche return sur contrôle EDIT [ par ArthurAuguste ] Bonjour, J’ai une fenêtre principale et une fenêtre enfant, ma fenêtre enfant est un simple contrôle "EDIT" créé avec CreateWindow("EDIT",…..). Je vou Probleme allocation C++ [ par elite182 ] Bonjour a tous , je dois réaliser une fonction qui range des grands nombres dans un tableau d'entier, ( ex : 2 333 546 donnera : Tab[0] = 546; tab


Nos sponsors


Sondage...

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

Photothèque

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,811 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales