Auswahl in bei der ComboBoxEx eines anderen Programm's ändern
-
Ich will mir ein kleines Programm schreiben, dass mir beim Arbeiten mit einem Programm ein wenig zur Hand geht.
Unter anderem muß ich dabei die Auswahl einer CCoboBoxEx ändern.Aktuell gehe ich folgendermaßen vor:
.
.
.
CComboBoxEx* cbEx = (CComboBoxEx*)cWnd->GetDlgItem(uiID);
cbEx->SetCurSel(iSel);cWnd->SendMessage(WM_COMMAND, MAKEWPARAM(uiID, CBN_SELCHANGE), LPARAM(cbEx->GetSafeHwnd()));
.
.
.Die Auswahl wird zwar geändert, aber dass Programm reagiert auf die Änderung erst, wenn ich mit der Maus die Combobox auf und zu mache.
Kann mir bitte jemand erklähren warum das so ist und was ich falsch mache?
-
1. Auswählen macht man mit diesem Befehl nicht. Das gehtmit CB_SETSEL
2. Davon bekommt das andere Programm aber nichts mit, also müsstest Du an das Parent dieses Fensters CBN_SELCHANGE senden.
-
Dass cWnd ist ja vom Programmfenster (Parent) dass ich bearbeiten möchte.
SetCurSel funktioniert und es wird der gewünschte Eintrag gewählt.
Also habe ich vorher mit FindWindow das richtige Programmfenster ermttelt.CBN_SELCHANGE sende ich ja an das Parent mit:
cWnd->SendMessage(WM_COMMAND, MAKEWPARAM(uiID, CBN_SELCHANGE), LPARAM(cbEx->GetSafeHwnd()));
Aber so wie's aussieht bekommt das Programm von der SendMessage nichts mit.Ach ja, ich arneite mit VS2005 und arbeite mit XP
-
Technisch gesehen machst Du alles richtig. Die Frage ist wie das andere Programm die Auswahl selbst mit bekommt.
-
[quote]Die Frage ist wie das andere Programm die Auswahl selbst mit bekommt./quote]
Ich habe den Codeabschnitt jetzt bei einem Testprogramm ausprobiert und da hat es funktioniert.
Bis jetzt habe ich es nur geschafft das Programm über Tastaturbefehle (SetInput) zu steuern.
Dass ist aber nicht die feine Art,da das zu steuernde Programm aktiv sein muß und den Eingabefogus braucht.
Wie kann ich rausfinden wie das Programm auf eine Auswahl reagiert?
-
Eigentlich gar nicht, außer Du kennst Dich mit dem Debugger so gut, aus, dass Du den fremden Code verstehst...
-
Naja, Hunderte Zeilen an ASM-Code wollte ich jetzt nicht umbedingt durchackern.
Leider sehen die Meldungen in Spy++ auch nicht auffällig aus.Ich werde jetzt nach der Versuch/Irrtum Methode das Programm abklopfen und schaun ob ich etwas herausfinden kann.
Danke vielmals für deine Hilfe.