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

Langage C++ Discussion :

Win32 notification changement de selection dans un combobox


Sujet :

Langage C++

  1. #1
    Membre éclairé
    Homme Profil pro
    Ingénieur aéronautique
    Inscrit en
    Octobre 2018
    Messages
    216
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur aéronautique

    Informations forums :
    Inscription : Octobre 2018
    Messages : 216
    Par défaut Win32 notification changement de selection dans un combobox
    Bonjour,

    Je souhaite simuler un changement de valeur dans un ComboBox d'une application externe à l'aide d'un script en VBA exécuté depuis CATIA (je pense néanmoins avoir plus d'aide dans un forum de C++).

    En fait, la ComboBox inclut une sous-fenêtre de classe ComboLBox. D'après ce lien https://docs.microsoft.com/en-us/win...window-classes, une ComboLBox est une ListBox contenue dans un ComboBox, mais n'est dispnible qu'au niveau système... J'avoue quelque peu manqué d'éléments pour comprendre ce qui ce cache vraiment.

    Ci-dessous le bout de code (en VBA qui reprend les convention de l'API Windows) :

    Code VBA : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
            ...
     
            Dim lRet As Long
     
            'returns index of selected item
            lRet = API.SendMessage(hwnd:=pHwnd, wMsg:=API.CB_SETCURSEL, wParam:=index, lParam:=0&)
     
            'notification
            'wParam: LOWORD control identifier - HIWORD notification code
            'lParam: handle to combo box
            lRet = API.SendMessage(hwnd:=API.GetParent(hwnd:=pHwnd), wMsg:=API.WM_COMMAND, wParam:=misc.MAkELONG(LOWORD:=API.GetDlgCtrlID(hwnd:=pHwnd), HIWORD:=API.CBN_SELCHANGE), lParam:=pHwnd)
     
           ...

    avec

    Code VBA : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    '
    Public Function MAkELONG(ByVal LOWORD As Integer, ByVal HIWORD As Integer) As Long
     
        MAkELONG = ((HIWORD * &H10000) + LOWORD)
     
    End Function

    J'arrive bien à changer de sélection, mais la notification du changement vers la fêntre parent pose problème. Pour infos, API.GetParent(hwnd:=pHwnd) est une fenêtre de type Afx (MFC), mais la fenêtre parent (parent du parent) est une DialogBox #32770.

    Dois-je travailler au niveau de la ComboBox ou de la ComboLBox et quant est-il du parent à notifier. Pouvez-vous m'aider à ce sujet ?

    Merci par avance !

  2. #2
    Expert éminent
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 395
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

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

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 395
    Par défaut
    De mémoire, la ComboLBox n'a pas de parent parce qu'elle est flottante (elle n'a donc pas le style WS_CHILD).
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  3. #3
    Membre éclairé
    Homme Profil pro
    Ingénieur aéronautique
    Inscrit en
    Octobre 2018
    Messages
    216
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur aéronautique

    Informations forums :
    Inscription : Octobre 2018
    Messages : 216
    Par défaut
    Merci pour ces précisions. Je viens finalement de voir ce qu'enregistre Spy++ et j'ai rajouté les messages API.CBN_SELENDOK avant et API.CBN_KILLFOCUS après API.CBN_SELCHANGE. Ça m'a l'air de fonctionner .

    UPDATE : il s'avère que l'enchainement des 3 notifications ne suffit pas, mais si je l'ai enchaine 2 fois de suite, ça passe .

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

Discussions similaires

  1. Multi-selection dans une ComboBox ?
    Par Moloko dans le forum MFC
    Réponses: 5
    Dernier message: 07/07/2021, 17h26
  2. Remplir un formulaire après la selection dans un combobox
    Par creale10 dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 19/09/2006, 10h51
  3. [C#] Changement d'item dans la comboBox
    Par cyllix dans le forum Windows Forms
    Réponses: 1
    Dernier message: 20/06/2006, 09h12
  4. Réponses: 4
    Dernier message: 10/05/2006, 10h50
  5. [C#] Selection dans une comboBox
    Par ShinS16 dans le forum Windows Forms
    Réponses: 8
    Dernier message: 03/01/2006, 01h58

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