000
09.06.2005, 14:52 Uhr
Wiesenlieger
|
Hi, ich hab folgendes Problem: In meinem Progi (ein Zeichenprogramm) will ich mit einem Klick der rechten Maustaste, je nach gerade aktiver Funktion, verschiedene Aktionen auslösen. - Zeichnen eines Kreises abbrechen und Kreis aus einem Array, wo sie alle "aufbewahrt" werden löschen - oder jede andere Fkt. (löschen, verschieben...) abbrechen - oder die letzte genutzte Fkt. aufrufen ...
Um den Code des Progis nicht zu sprengen, hab ich angefangen einige Fkt. in eine DLL auszulagern. Funktioniert an sich gut, nur muß ich bei oben beschriebener wieder die letzte Aktion aufrufen (Kreis zeichnen, löschen,...). Also eine Fkt. des aufrufenden Objekts. Wie kann ich das lösen.
Noch etwas Code: die Fkt. in der DLL
C++: |
///////////////////////////////////////////////////////////////////////////// // Letzte Funktion aufrufen, oder abbrechen extern "C" void PASCAL EXPORT DORecallMouseFkt(int *action, int *lastAction, CObArray *array) { // gerade beim zeichnen eines ROI // -> rechter Mousebutton == Abbruch und löschen des erstellten ROI if (*action == DRAW_RADIUS_ROI) array->EraseObAt(array->GetSize() - 1);
else if (*action == NOTHING) //letzte Aktion wiederholen { switch ( lastAction ) { case SET_NEW_ROI: break;// hier wären die Fkt. aufzurufen case MOVE_OBJECT: break; case ERASE_OBJECT: break; case SELECT_OBJERCT: break; } } // definitiver Abbruch jeder Fkt. *action = NOTHING; }
|
z.B. eine aufzurufende Fkt:
C++: |
void CSynCamDoc::OnButtonSelect() { m_iMouseAction = SELECT_OBJECT; } // der Rest passiert dann beim Klicken der linken Maustaste
|
Kann ich eine Windowsnachricht rausschicken? Die aufzurufenden Methoden sind immer Reaktionen auf Buttons oder Menüeinträge. Oder gibts elegantere Möglichkeiten?
Danke für Eure Hilfe im Voraus. |