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 :

Editbox d'activeX qui ne réagit pas au backspace


Sujet :

MFC

  1. #1
    Membre du Club
    Inscrit en
    Janvier 2006
    Messages
    152
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 152
    Points : 49
    Points
    49
    Par défaut Editbox d'activeX qui ne réagit pas au backspace
    Bonjour,

    j'ai une question à propos du backspace dans une editbox, en recherchant sur le forum, j'ai trouvé quelques infos mais je ne crois pas que cela réponde à mon problème, c'est à dire, une editbox dans un activeX qui ne réagit pas au backspace!

    Dois-je utiliser ceci, et surtout comment devrais-je l'utiliser ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    void CMyEdit::OnChar(UINT nChar, UINT nRepCnt, UINT nFlags)
    {
       // TODO: Add your message handler code here and/or call default
        if(IsAltDown())
        {
            TRACE("\nAlt");
        }
       if(nChar=='a')
        {
            PostMessage(WM_CHAR,'A');
            return;
        }
       CEdit::OnChar(nChar, nRepCnt, nFlags);
    }
    merci d'avance !

  2. #2
    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
    Points : 16 075
    Points
    16 075
    Par défaut
    tu veux dire que lorsque tu appuies sur backspace dans ton edit box, cela n'efface pas les données et c'est un problème ?

  3. #3
    Membre du Club
    Inscrit en
    Janvier 2006
    Messages
    152
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 152
    Points : 49
    Points
    49
    Par défaut
    oui, je peux effacer les données avec backspace lorsque je suis en mode debug de visual studio mais pas sous IE.

    La touche suppr fonctionne par contre

  4. #4
    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
    Points : 16 075
    Points
    16 075
    Par défaut
    et tu n'as pas fait de traitement particulier pour bloquer la touche backspace ?

  5. #5
    Membre du Club
    Inscrit en
    Janvier 2006
    Messages
    152
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 152
    Points : 49
    Points
    49
    Par défaut
    non pas de traitement particulier, c'est ça qui est étonnant

  6. #6
    Membre du Club
    Inscrit en
    Janvier 2006
    Messages
    152
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 152
    Points : 49
    Points
    49
    Par défaut
    mais j'ai la sérieuse impression que c'est un problème directement lié au fait que l'activeX soit intégré dans une page HTML, sachant que le backspace est handlé par IE ça doit poser problème, non ?

    Par contre je ne vois pas du tout comment régler le pb :/

  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
    Points : 16 075
    Points
    16 075
    Par défaut
    est-ce que lorsque tu appuies sur backspace, cela retourne à la page précédente ?

  8. #8
    Membre du Club
    Inscrit en
    Janvier 2006
    Messages
    152
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 152
    Points : 49
    Points
    49
    Par défaut
    et bien non

  9. #9
    r0d
    r0d est déconnecté
    Expert éminent

    Homme Profil pro
    tech lead c++ linux
    Inscrit en
    Août 2004
    Messages
    4 262
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : tech lead c++ linux

    Informations forums :
    Inscription : Août 2004
    Messages : 4 262
    Points : 6 680
    Points
    6 680
    Billets dans le blog
    2
    Par défaut
    pour tester, tu peux faire quelque chose comme ça (dans le body de ta page html) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <body [...] onkeydown="alert(event);">
    ou
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    <script language="javascript">
    function mafonction()
    {
        switch (event)
        {
        // ... (code de test)
        }
    }
    <script>
     
    <body [...] onkeydown="mafonction()">
    Histoire de voir un peu plus près ce qu'il se passe.

    hope it helps.
    « L'effort par lequel toute chose tend à persévérer dans son être n'est rien de plus que l'essence actuelle de cette chose. »
    Spinoza — Éthique III, Proposition VII

  10. #10
    Membre du Club
    Inscrit en
    Janvier 2006
    Messages
    152
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 152
    Points : 49
    Points
    49
    Par défaut
    alors avec le javascript

    j'ai parfois un alert qui remonte quand je suis dans l'edit box et que je fais backspace, mais d'autre fois non...

    au lancement de l'activex : pas d'alert
    je clique sur la page IE en dehors de l'activeX: alert
    je reviens dans l'activeX: alert
    je clique un peu partout: plus d'alert

  11. #11
    Membre du Club
    Inscrit en
    Janvier 2006
    Messages
    152
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 152
    Points : 49
    Points
    49
    Par défaut
    je me demande si cela n'est pas lié au fait que je n'arrive pas à créer de raccourcis clavier:

    j'ai un Ctrl-D dans mes accélérators ,et sur le ON_COMMAND, je lance une afxmessbox qui devrait s'afficher, mais cela ne fonctionne pas

    bref est ce que tout ceci n'est pas lié?...

  12. #12
    r0d
    r0d est déconnecté
    Expert éminent

    Homme Profil pro
    tech lead c++ linux
    Inscrit en
    Août 2004
    Messages
    4 262
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : tech lead c++ linux

    Informations forums :
    Inscription : Août 2004
    Messages : 4 262
    Points : 6 680
    Points
    6 680
    Billets dans le blog
    2
    Par défaut
    l'activeX en question, est-ce toi qui l'a programmé? As-tu les sources?
    Car j'ai bien l'impression que si c'est lui qui intercepte l'evenement de la touche '<-' et qu'il ne le renvoie pas, tu ne pourra rien y faire :/
    « L'effort par lequel toute chose tend à persévérer dans son être n'est rien de plus que l'essence actuelle de cette chose. »
    Spinoza — Éthique III, Proposition VII

  13. #13
    Membre du Club
    Inscrit en
    Janvier 2006
    Messages
    152
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 152
    Points : 49
    Points
    49
    Par défaut
    oui j'ai les sources, je suis en train de le développer, et je n'intercepte pas la touche backspace, donc je ne comprends pas vraiment pourquoi cela ne fonctionne pas, c'est bizarre !

  14. #14
    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
    Points : 17 323
    Points
    17 323
    Par défaut
    salut
    essaye d'intercepter le message WM_GETDLGCODE dans ton ocx et de renvoyer:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    // --------------------------------------------------------------------------
    UINT CMyEdit::OnGetDlgCode() 
    {
    	// TODO: Add your message handler code here and/or call default
     
    //	UINT nCode=CEdit::OnGetDlgCode();
      //     nCode+=DLGC_WANTTAB;
     
    	return DLGC_WANTALLKEYS;
    }

  15. #15
    Membre du Club
    Inscrit en
    Janvier 2006
    Messages
    152
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 152
    Points : 49
    Points
    49
    Par défaut
    heu alors j'ai une classe MainDialog qui représente ma fenetre de dialogue sur laquelle se trouvent mes boutons, j'ai donc rajouté ce code avec un ON_WM_GETDLGCODE()
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    UINT MainDialog::OnGetDlgCode()
    {
    	CString strTmp;
       // TODO: Add your message handler code here and/or call default
     
    //   UINT nCode=CEdit::OnGetDlgCode();
      //     nCode+=DLGC_WANTTAB;
    	#ifdef DEBUG
    	strTmp.Format("[OnGetDlgCode]%d",DLGC_WANTALLKEYS);
    	AfxMessageBox(strTmp);
    	#endif
       return DLGC_WANTALLKEYS;
    }
    mais rien :/

  16. #16
    Membre du Club
    Inscrit en
    Janvier 2006
    Messages
    152
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 152
    Points : 49
    Points
    49
    Par défaut
    en errant sur le net j'ai trouvé ceci:

    http://support.microsoft.com/?scid=kb%3Bfr%3B168777&x=2&y=11

    j'ai donc essayé en copiant collant tel quel leur code d'exemple mais cela ne marche pas

    quelqu'un aurait il une idée de comment adapter ce code ou peut etre expliquer mieux ce qu'il veulent dire, j'ai certainement du rater quelque chose mais je ne sais pas quoi !

  17. #17
    r0d
    r0d est déconnecté
    Expert éminent

    Homme Profil pro
    tech lead c++ linux
    Inscrit en
    Août 2004
    Messages
    4 262
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : tech lead c++ linux

    Informations forums :
    Inscription : Août 2004
    Messages : 4 262
    Points : 6 680
    Points
    6 680
    Billets dans le blog
    2
    Par défaut
    Si tu met un point d'arrêt au début de la fonction PreTranslateMessage et que tu fais du ps à pas, ça te donner quoi?
    « L'effort par lequel toute chose tend à persévérer dans son être n'est rien de plus que l'essence actuelle de cette chose. »
    Spinoza — Éthique III, Proposition VII

  18. #18
    Membre du Club
    Inscrit en
    Janvier 2006
    Messages
    152
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 152
    Points : 49
    Points
    49
    Par défaut
    ca donne rien, j'ai meme mis un afxmessagebox, et pouf rien ne s'affiche

  19. #19
    Membre du Club
    Inscrit en
    Janvier 2006
    Messages
    152
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 152
    Points : 49
    Points
    49
    Par défaut
    j'ai vu cette solution sur plusieurs forums

    voici mon implémentation dans la classe de contrôle de l'activeX:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
     // trap keys and forward on to the control
    BOOL CActiveXCtrl::PreTranslateMessage(MSG* pMsg)
    {
       AfxMessageBox("plop");
       switch (pMsg->message)
          {
             case WM_KEYDOWN:
             case WM_KEYUP:
                switch (pMsg->wParam)
                {
                   case VK_UP:
                   case VK_DOWN:
                   case VK_LEFT:
                   case VK_RIGHT:
                   case VK_HOME:
                   case VK_END:
                      SendMessage (pMsg->message, pMsg->wParam, pMsg->lParam);
     
                      // Windowless controls won't be able to call SendMessage.
                      // Instead, just respond to the message here.
                      return TRUE;
                }
                break;
          }
          return COleControl::PreTranslateMessage(pMsg);
       }
    ca ne passe jamais dedans :/

    quelqu'un saurait il comment faire ?

Discussions similaires

  1. Id modifié qui ne réagit pas au clic -> ?
    Par souffle56 dans le forum jQuery
    Réponses: 3
    Dernier message: 02/09/2010, 17h22
  2. Probleme d' ActionListener qui ne réagit pas
    Par hug0x dans le forum EDT/SwingWorker
    Réponses: 1
    Dernier message: 02/11/2009, 20h54
  3. Un trigger qui ne réagit pas
    Par sniperricko dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 03/11/2008, 19h02
  4. Un trigger qui ne réagit pas
    Par sniperricko dans le forum MS SQL Server
    Réponses: 1
    Dernier message: 03/11/2008, 14h33
  5. Table qui ne réagit pas au clic d'un menu
    Par Premium dans le forum AWT/Swing
    Réponses: 4
    Dernier message: 31/12/2006, 10h54

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