Accueil > Forum > > > > C++, Windows: se positionner sur un champ de saisie à l'ouverture d'une fenetre
C++, Windows: se positionner sur un champ de saisie à l'ouverture d'une fenetre
samedi 27 novembre 2004 à 19:43:21 |
C++, Windows: se positionner sur un champ de saisie à l'ouverture d'une fenetre

yves_r
|
C++, Windows: Comment puis-je me positionner sur un champ de saisie défini à l'ouverture d'une fenetre ? Par défaut, il se positionne sur le bouton de validation, et je ne trouve rien pour changer cela. Merci. Yves R
|
|
samedi 27 novembre 2004 à 20:58:31 |
Re : C++, Windows: se positionner sur un champ de saisie à l'ouverture d'une fenetre

racpp
|
Salut, Je pense qu'il faut utiliser la fonction SetFocus(): SetFocus(hChamp); hChamp est le HWND du contrôle servant de champ, un EDIT par exemple. Il est préférable d'appeler cette fonction juste à la fin du traitement du message WM_CREATE. Ainsi tu peux te positionner sur n'importe quel contrôle à l'ouverture de la fenêtre. J'espère que ça correspond à ce que tu cherches.
|
|
dimanche 28 novembre 2004 à 15:54:26 |
Re : C++, Windows: se positionner sur un champ de saisie à l'ouverture d'une fenetre

vecchio56
|
Si c'est un dialog, retourne TRUE dans WM_INITDIALOG et mets hChamp dans wParam
|
|
dimanche 28 novembre 2004 à 16:45:01 |
Re : C++, Windows: se positionner sur un champ de saisie à l'ouverture d'une fenetre

racpp
|
Salut, vecchio56 >> Pour qu'un contrôle ait le focus au lancement de la boite de dialogue il faut qu'on retourne FALSE dans WM_INITDIALOG comme ceci: case WM_INITDIALOG: //..... SetFocus(hChamp); return FALSE;
|
Si on retourne TRUE, aucun contrôle ne peut avoir le focus au lancement de la boite de dialogue. C'est précisé dans MSDN. Tu es sûr que ta méthode marche? Si oui comment tu fais exactement?
|
|
dimanche 28 novembre 2004 à 17:02:58 |
Re : C++, Windows: se positionner sur un champ de saisie à l'ouverture d'une fenetre

vecchio56
|
Oui j'ai dû me tromper, j'ai mal lu en fait on ne peut pas choisir ce qu'il y a dans wParam. "The dialog box procedure should return TRUE to direct the system to set the keyboard focus to the control specified by wParam" Je pensais que si on mettait le controle dans wParam et qu'on retourne TRUE ca marchait, mais apparemment non.
Mais pour un Dialog, je crois qu'il fat utiliser WM_NEXTDLGCTL plutot que la fonction SetFocus...
|
|
dimanche 28 novembre 2004 à 18:02:44 |
Re : C++, Windows: se positionner sur un champ de saisie à l'ouverture d'une fenetre

AlexMAN
|
Oui, il faut 'poster' WM_NEXTDLGCTL avec en wparam le handle du controle, et lparam a 1.
+2(p - n)
|
|
dimanche 28 novembre 2004 à 19:07:45 |
Re : C++, Windows: se positionner sur un champ de saisie à l'ouverture d'une fenetre

racpp
|
C'est vrai, on ne peut pas agir sur wParam car selon MSDN c'est le système qui lui attribue le HWND du contrôle: "The control to receive the default keyboard focus is always the first control in the dialog box that is visible, not disabled, and that has the WS_TABSTOP style. When the dialog box procedure returns TRUE, the system checks the control to ensure that the procedure has not disabled it. If it has been disabled, the system sets the keyboard focus to the next control that is visible, not disabled, and has the WS_TABSTOP. An application can return FALSE only if it has set the keyboard focus to one of the controls of the dialog box." Pourquoi plutôt WM_NEXTDLGCTL que SetFocus()? J'utilise toujours SetFocus() dans ce genre de cas et ca marche sans aucun problème. Et je trouve nettement plus pratique de faire: que de faire: | SendMessage(hDlg,WM_NEXTDLGCTL,(WPARAM)hChamp,(LPARAM)1); |
Pourquoi devrais-je préférer "WM_NEXTDLGCTL" ??
|
|
dimanche 28 novembre 2004 à 19:32:22 |
Re : C++, Windows: se positionner sur un champ de saisie à l'ouverture d'une fenetre

vecchio56
|
Moi j'utilise WM_NEXTDLGCTL depuis le jour ou j'ai voulu utiliser SetFocus et que ca n'a pas marché. Cela dit, il est possible que ce soit équivalent dans WM_INITDIALOG. Mon truc si je me souviens bien c'était Appuyer sur un bouton, afficher une MessageBox et mettre le curseur dans un EDIT, et ca ne marchait pas avec SetFocus, alors qu'avec WM_NEXTDLGCTL aucun probleme. De toute facon, regarde comment est présenté WM_NEXTDLGCTL dans la MSDN, et tu verras que c'est bien celui la qu'il faut utiliser avec une DialogBox.
|
|
dimanche 28 novembre 2004 à 19:33:52 |
Re : C++, Windows: se positionner sur un champ de saisie à l'ouverture d'une fenetre

vecchio56
|
D'ailleurs ya une remarque la dessus sur MSDN que j'avais pas vue: "This message performs additional dialog box management operations beyond those performed by the SetFocus function WM_NEXTDLGCTL updates the default pushbutton border, sets the default control identifier, and automatically selects the text of an edit control (if the target window is an edit control). " Je dois être fatigué parce que j'arrive pas a comprendre la phrase.
|
|
dimanche 28 novembre 2004 à 20:01:20 |
Re : C++, Windows: se positionner sur un champ de saisie à l'ouverture d'une fenetre

AlexMAN
|
"Ce message effectue des operations de 'management' additionnelles au dela de celles proposées par la fonction SetFocus()...etc" Il est donc preferable d'utiliser ce message dans certains cas. Mais Brunews a tjrs dit qu'il FALLAIT utiliser WM_NEXTDLGCTL, je comprends pas trop kan mm...
+2(p - n)
|
|
Cette discussion est classée dans : ouverture, windows, champ, saisie, positionner
Répondre à ce message
Sujets en rapport avec ce message
champ de saisie [ par vinc ]
Comment récupérer ligne par ligne dans un champ de saisie en Visual C++ ?vinc
Ouverture du lecteur de CD-ROM [ par EgorLetov ]
j'ai un big problème je n'arrive pas à ouvrir mon lecteur cd sous windows en cpp. J'utilise VCplusplus. JE N'UTILISE PAS DE MFC !!!#include "windows.h
Un probleme avec l'ouverture de plusieurs fichiers en meme temps en windows [ par glName ]
Bonjour !J'ai un probleme pour ouvrir plusieurs fichiers à partir d'une boite de dialogue (je cherche une solution avec les MFC ou les API windows )Bi
Valeur d'un champ saisie [ par TeniX ]
bonjour, Je voudrais savoir comment retourné la valeur d'un champs de saisie (ex:textbox) en l'affichant par un AfxMessageBoX quand j'appuie sur un b
Ouverture d'une base, Gestion d'une base en C++ [ par the100tinelle ]
Bonjour,je dois faire un logiciel de gestion d'articles, de clients, de devis et de factures en C++ (j'utilise Visual Studio 6.0) et je dois créer une
API windows (Ouverture de fichier) [ par rivaldinho ]
Salut, j'ai un fichier notepad que je voudrai lancer à partir de mon code C++ comment faire???
Ouverture et Sauvegarde de fichiers [ par klidou ]
Je cherche un moyen ou une commande windows deja existante qui me permettrai d'avoir la fenetre 'windows' suivante (open & save): <IMG style="WIDTH: 3
Touches de fonctions [ par CHENRY ]
En VC++6.0 avec les MFC, je souhaite employer les touches de fonction( F1 à F8) .Le but est:Dans un ecran de saisie, quand l'user est sur un champ de
Activer/Désactiver champ de saisie [ par CHENRY ]
En VC++ 6 avec les MFC, comment faire pour activer désactiver dynamiquement un champ de saisie.Cette option existe dans les propirétes lorsqu'on créé
Créer un masque de saisie en C [ par jimmi ]
Bonjour, J'ai cherché partout mais en vainje développe un petit prog. en C qui fonctionne sur des lecteurs code barre.N'etant pas un grand Spécialiste
Livres en rapport
|
Derniers Blogs
JOYEUX ANNIVERSAIRE NIXJOYEUX ANNIVERSAIRE NIX par ebartsoft
Souhaitons un bon et joyeux anniversaire à notre hôte à tous, Nix.
Je ne le répéterais jamais assez mais sans lui rien ne serait possible. Il défit en permanence les lois de la gravité et comme il le dit si bien, si tu lui fais confiance ça devra...
Cliquez pour lire la suite de l'article par ebartsoft IMAGINE CUP 2012, MAKE A SIGN EN FINALEIMAGINE CUP 2012, MAKE A SIGN EN FINALE par junarnoalg
Voilà qui est fait, la nouvelle est officielle ! L'équipe belge "Make a Sign" va au pays des kangourous défendre son projet dans la catégorie Software Design. http://www.imaginecup.com/CompetitionsContent/Competition/WorldwideFinalists.aspx V...
Cliquez pour lire la suite de l'article par junarnoalg KINECT 1.5 IS OUT !KINECT 1.5 IS OUT ! par Vko
La version 1.5 du Kinect For Microsoft vient tout juste de sortir ! Plein de nouveautés: Tracking de squelette en Near Mode Détection en position assise Détection faciale avec un SDK dédié Documentation et des guideline (enfin) Un out...
Cliquez pour lire la suite de l'article par Vko LES ACTUALITéS DE LA SEMAINE SUR C2I.FR (14 MAI - 20 MAI) LES ACTUALITéS DE LA SEMAINE SUR C2I.FR (14 MAI - 20 MAI) par richardc
Mise à jour des Web API du 14 Mai
Réservez dès maintenant votre journée du 20 juin pour le Windows Azure Dev Camp 2012 à Paris
Mise à jour de Team Foundation Service
MechCommander 2 sur Windows 8
Entity Framework 5 Release Candidate e...
Cliquez pour lire la suite de l'article par richardc REACTIVE EXTENSIONS : CONSOMMER DES SERVICES AVEC RX PARTIE 3, LES PIèGES à éVITERREACTIVE EXTENSIONS : CONSOMMER DES SERVICES AVEC RX PARTIE 3, LES PIèGES à éVITER par Groc
Une mauvaise utilisation de rx lors de l'écriture d'une couche d'accès à des services peut conduire à des cas embarassants avec des erreurs mal gérées, des appels qui ne partent lorsqu'ils le devraient, et même des résultats incorrects . le tout nuis...
Cliquez pour lire la suite de l'article par Groc
Logiciels
sDEVIS-FACTURES vlPRO (8.1.0.3)SDEVIS-FACTURES VLPRO (8.1.0.3)sDEVIS-FACTURES vlPRO a été mis au point pour les particuliers, créateurs, entrepreneurs, artisa... Cliquez pour télécharger sDEVIS-FACTURES vlPRO 974 Application Server (12.2.4.6)974 APPLICATION SERVER (12.2.4.6)Développez de puissantes applications dans un environnement de 'cloud computing', clusterisé, séc... Cliquez pour télécharger 974 Application Server vPicture (1.4.2.1)VPICTURE (1.4.2.1)Avec vPicture, hébergez vos images facilement et rapidement.
vPicture est un utilitaire simple, ... Cliquez pour télécharger vPicture Easy-Planning (2.2.1.6)EASY-PLANNING (2.2.1.6)Easy-Planning permet de créer des plannings sous la représentation de diagrammes et est adapté au... Cliquez pour télécharger Easy-Planning COM-BACKUP (2.0)COM-BACKUP (2.0)
COM-BACKUP est un logiciel de sauvegarde qui permet de planifier les sauvegardes de vos dossiers ...
Cliquez pour télécharger COM-BACKUP
|