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 !![]()
Partager