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 :

[CWnd] SetFocus et ActiveX


Sujet :

MFC

  1. #1
    Membre confirmé Avatar de Luffy Duck
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    165
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 165
    Par défaut [CWnd] SetFocus et ActiveX
    Salut à tous =)

    J'ai une fenêtre CDialog qui contient un contrôle ActiveX et une zone d'édition. J'aimerais mettre le focus sur la zone d'édition, mais la fonction SetFocus() ne marche pas, c'est toujours l'ActiveX qui le focus.

    Comment pourrais-je procéder ?

    Merci

  2. #2
    Rédacteur
    Avatar de farscape
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2003
    Messages
    9 055
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2003
    Messages : 9 055
    Par défaut
    salut,
    logiquement en faisant monctrl.SetFocus() ça doit suffir.
    si c'est pas le cas c'est que ton activex a des raisons de garder le focus...
    autre question tu ne ferais pas ça dans une boite de dialogue sur OnInitDialog par hasard ?

  3. #3
    Membre confirmé Avatar de Luffy Duck
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    165
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 165
    Par défaut
    ça ne fonctionne pas. J'ai essayé avec mon_ctrl.SetFocus() et GetDlgItem(IDC_MONCTRL)->SetFocus(), mais aucune ne marche.

    C'est un controle Crystal Report, et je suis sûr qu'il n'a pas besoin de garder le focus ! ah le gredin !

    En fait le problème c'est que j'utilise la touche F1 pour efffectuer une action.
    Or quand le controle ActiveX a le focus, ça appelle l'aide puis ça effectue mon action. Et je n'arrive à intercepter ou surcharger la fonction OnHelpInfo() sur le controle.

    Donc voilà si tu as une idée.

  4. #4
    Rédacteur
    Avatar de farscape
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2003
    Messages
    9 055
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2003
    Messages : 9 055
    Par défaut
    essaye d'intercepter le message WM_HELPINFO sur ta fenetre.


  5. #5
    Membre confirmé Avatar de Luffy Duck
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    165
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 165
    Par défaut
    c'est fait pour la fenêtre, mais pas sur le controle ActiveX. je n'y arrive pas.
    J'ai essayé de rajouter BEGIN_MESSAGE_MAP(), mais finalement la classe hérite de CWnd et non de CDialog, donc je ne vois pas comment intercepter les messages...

    Je viens de rajouter la fonction PreTranslateMessage(), mais il ne connait pas le message WM_HELPINFO.

  6. #6
    Rédacteur
    Avatar de farscape
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2003
    Messages
    9 055
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2003
    Messages : 9 055
    Par défaut
    Citation Envoyé par Luffy Duck
    c'est fait pour la fenêtre, mais pas sur le controle ActiveX. je n'y arrive pas.
    J'ai essayé de rajouter BEGIN_MESSAGE_MAP(), mais finalement la classe hérite de CWnd et non de CDialog, donc je ne vois pas comment intercepter les messages...

    Je viens de rajouter la fonction PreTranslateMessage(), mais il ne connait pas le message WM_HELPINFO.
    tu as fais une classe dérivée de l'activex ,c'est ça ?

  7. #7
    Membre confirmé Avatar de Luffy Duck
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    165
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 165
    Par défaut
    En fait j'ai ajouté mon controle sur ma fenêtre, puis j'ai ajouté une variable à ce controle, VC a créé tout seul la classe CCrviewer qui hérite de CWnd.

  8. #8
    Membre confirmé Avatar de Luffy Duck
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    165
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 165
    Par défaut
    Bon ça y est, j'ai réussi.

    j'ai ajouté le BEGIN_MESSAGE_MAP(), mais il faut également rajouter dans le .h la macro DECLARE_MESSAGE_MAP().

    Ensuite j'ai ajouté la méthode
    BOOL OnHelpInfo(HELPINFO * hi)
    {
    return FALSE;
    }

    et ça roule

    Merci, bonne journée

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

Discussions similaires

  1. Erreur setfocus??
    Par Alx-I dans le forum Composants VCL
    Réponses: 2
    Dernier message: 06/02/2003, 14h04
  2. [ActiveX] Propriété "Picture" dans un contrôle util
    Par Ricou13 dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 14/12/2002, 15h59
  3. PB d'import avec les ActiveX sous BCB6
    Par dergen dans le forum C++Builder
    Réponses: 4
    Dernier message: 29/11/2002, 10h18
  4. [ActiveX] Visibilité d'une propriété
    Par paradise dans le forum Composants VCL
    Réponses: 2
    Dernier message: 14/11/2002, 18h33
  5. ActiveX : linker en statique ?
    Par tut dans le forum MFC
    Réponses: 8
    Dernier message: 07/11/2002, 10h24

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