IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

MFC Discussion :

Récupérer le focus sur ma boite de dialogue


Sujet :

MFC

  1. #1
    Membre confirmé Avatar de Hokagge
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    149
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 149
    Par défaut Récupérer le focus sur ma boite de dialogue
    Salut,

    J'ai essayer la fonction CxxxDlg::SetFocus(); et ca marche pas,

    Mon appli doit lancer un programme et récupérer le focus une fois ce programme lancé,

    Je peu enlever le focus de ce programme par l'intermédiaire d'une fonction, mais je ne sais pas comment forcer le focus a retourner sur mon prog a moi ,

    Si quelqu'un pouvait m'aider !
    Merci

  2. #2
    Membre confirmé Avatar de Hokagge
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    149
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 149
    Par défaut
    J'ai l'impression de ne pas être très clair ....

    En gros, quand je perds la main sur mon deuxieme programme (celui que je lance, donc ce n'est pas celui que je suis en train de coder), je n'arrive pas à récupérer la main sur mon 1er programme ( celui que je code), j'ai testé la fonction SetFocus, mais elle ne fait rien.

    Si quelqu'un a une idée, n'hésitez pas , merci

  3. #3
    Rédacteur
    Avatar de nico-pyright(c)
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    6 414
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 6 414
    Par défaut
    et bien, je sais pas si j'ai effectivement compris, mais tu peux à la rigueur intercepter le message d'activation de ton autre programme (si ce n'est pas toi qui le programme, il faut faire un hook), et une fois celui-ci recu, tu en profites pour faire un SetFocus sur la fenetre de ton appli

  4. #4
    Membre confirmé Avatar de Hokagge
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    149
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 149
    Par défaut
    Merci de répondre

    Dans la mesure ou c'est dans mon programme 1( mon mien ) que je donne l'odre au prog 2 ( celui que je ne code pas) de se réduire, je n'est pas besoin d'interception, mais la ou ce que tu dit m'intéresse c'est quand tu me dit d'utiliser la fonction SetFocus sur la fenetre de mon appli.

    Je l'ai fait de cette maniere:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    pfn_AGPS5_AlturionGPSToFront(dwCookie, false);  //Demande au prog 2 de se réduire
     
    CAlturionDlg::SetFocus();  //Demande de récupération du focus sur mon prog1
    Est-ce qu'il ya une incohérence dansmon code ?
    Parceque ceci ne marche pas, je voi bien mon prog 2 se réduire, mais je ne reprend pas la main sur mon prog 1

    Pleazz help

  5. #5
    Rédacteur
    Avatar de nico-pyright(c)
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    6 414
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 6 414
    Par défaut
    tu as des composants dans ta dialog ? genre un edit par exemple ...

    tu pourrais essayer de mettre le focus sur ce composant, plutot que sur la dialog en elle meme.

    Sinon, tu peux faire un ShowWindow avec l'option qui active la fenetre, voir utiliser BringWindowToTop pour la mettre en premier plan

    un truc du genre ...

  6. #6
    Membre confirmé Avatar de Hokagge
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    149
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 149
    Par défaut
    J'ai malheureusement déja testé un ShoWindows avec plusieurs param différents et le résultat est tjrs le meme :s

    Sinon les composants de ma boite de dialogue sont, a part un bouton, tous utiles, c'est pourquoi je voudrai directement avoir le focus sur ma boite de dialogue.

    Mais en cherchant sur le net dont les FAQ, je m'apercoi qu'il ya plusieur maniere de récupérer le focus, seulement ché moi aucune ne marche...

    Je me demande si je n'ai pas oublié quelque chose..

    Si une idée vien je suis tjrs preneur !!!! :>

  7. #7
    Rédacteur
    Avatar de nico-pyright(c)
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    6 414
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 6 414
    Par défaut
    tu as essayé les autres fonctions de pilotage de fenetres ?

    SetWindowPos avec HWND_TOP
    BringWindowToTop
    SetForegroundWindow

    et le SetFocus sur ton boutton ?

  8. #8
    Membre confirmé Avatar de Hokagge
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    149
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 149
    Par défaut
    A par SetWindowPos, je les ai testé, et le résultat est le même, je croi vraiment que je passe a côté de quelque chose...

    J'ai éventuellement pensé a quelque chose:

    A chaque foi que j'ai utilisé ces fonction, je l'ai fait de cette maniere:

    CAlturionDlg::LaFonction();

    Et j'ai l'impression que la fonction s'applique a une fenetre autre que celle que je veu,
    est-ce qu'il ne serait pas mieu de passer par un seul et même objet pour ttes mes fonctions de façon a ce que je soit sur que quand je demande de reprendre la main sur ma boite de dialogue, il ira bien chercher celle que je veu ?

    J'espere avoir été assez clair, et que penses tu de ce raisonnement ?

  9. #9
    Rédacteur
    Avatar de nico-pyright(c)
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    6 414
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 6 414
    Par défaut
    C'est possible aussi que la fonction qui minimise ne soit pas terminée avant que ton SetFocus ne soit executée.

    Tu as essayé de retarder ce SetFocus ?

    Sinon, tu peux toujours essayer d'utiliser l'API SetFocus, qui prend en paramètre le handle de ta dialogue, qui doit se trouve dans une variable, genre m_hwnd

  10. #10
    Membre confirmé Avatar de Hokagge
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    149
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 149
    Par défaut


    Il faut minimiser ma fenêtre avant ?????????

    Eh bien voila une chose à laquelle je n'avais pas penser

  11. #11
    Rédacteur
    Avatar de nico-pyright(c)
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    6 414
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 6 414
    Par défaut
    mais non,
    mais d'après ce que j'ai compris ton prog1 minimise le prog2, non ?
    cette tache n'est peut-etre pas terminée lorsque tu essaies de faire ton SetFocus

  12. #12
    Membre confirmé Avatar de Hokagge
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    149
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 149
    Par défaut
    Ah d'accord, c'est en effet possible.

    Je vais tenter ca.

  13. #13
    Membre confirmé Avatar de Hokagge
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    149
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 149
    Par défaut
    Malheureusement, la fonction qui me permet de minimiser mon prog2 est synchrone, c'est a dire qu'elle fige le prog tant que la minimisation n'est pas terminée.
    J'ai tout de même tenter de mettre un Sleep(5000) derriere cette fonction, avant un ShowWindow(SW_SHOW) pour mon prog1, mais ca ne change rien.
    J'ai l'impression que je ne vais jamais y arriver !!

  14. #14
    Rédacteur
    Avatar de nico-pyright(c)
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    6 414
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 6 414
    Par défaut
    et tu es obligé d'utiliser cette fonction ? tu ne peux pas le faire simplement avec un ShowWindow ?

    sinon, regarde bien dans la barre des taches, quelle application est active ?

    tu as essayé de mettre le focus sur un des controles qui est dans ta boite de dialogue ?

  15. #15
    Membre confirmé Avatar de Hokagge
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    149
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 149
    Par défaut
    Le fait d'utiliser le ShowWindows tout seul, me fait un affichage tout confu, il y a un mélange du prog2 avec le prog1,

    Pour la barre des taches, ya un petit problem, je développe avec embedeed, pour PDA, donc pas de barre des taches,

    Sinon tu me parle de mettre le focus uniquement sur un control, c'est mais un seul control ne me servira a rien...

    Mais peut etre que le fait de ramener le focus a un control, aiderai a ramener le focus sur tout la fenetre ?

  16. #16
    Rédacteur
    Avatar de nico-pyright(c)
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    6 414
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 6 414
    Par défaut
    Citation Envoyé par Hokagge
    Mais peut etre que le fait de ramener le focus a un control, aiderai a ramener le focus sur tout la fenetre ?
    Ca va te ramener le focus sur ton composant, et en l'occurence, mettre active ta fenetre et la ramener en premier plan.

    A moins que je n'ai pas compris ta définition du focus ?

  17. #17
    Membre confirmé Avatar de Hokagge
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    149
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 149
    Par défaut
    YATA,

    Ca y est ca marche !!!

    En effet le focus est non seulement ramené sur mon bouton mais aussi sur toute la fenêtre !!!

    Arigato Nico-pyright pour ton aide et ta patience

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Focus sur une boîte de dialogue
    Par drinkmilk dans le forum MFC
    Réponses: 17
    Dernier message: 23/05/2006, 11h47
  2. Réponses: 43
    Dernier message: 03/03/2006, 19h41
  3. Erreur sur une boite de dialogue WXWIDGETS
    Par barbarello dans le forum Autres éditeurs
    Réponses: 6
    Dernier message: 06/01/2006, 20h46
  4. [MFC]Application basée sur des boites de dialogue
    Par -=Spoon=- dans le forum MFC
    Réponses: 2
    Dernier message: 24/08/2005, 11h55
  5. Réponses: 1
    Dernier message: 30/05/2005, 17h02

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo