2009-05-07 7 views
1

Ich bin ein Einbetten einer Windows-Anwendung in meine SWT-Anwendung mit "Reparent". Dieser Teil funktioniert gut. Ich möchte jetzt meine SWT-App in die Nachrichtenwarteschlange einhängen, damit die eingebettete App Mausbewegungsereignisse erhalten kann.Java/SWT: So erhalten Sie Mausereignisse von einem eingebetteten Fenster

Ich sehe, dass die OS-Klasse in SWT eine Reihe von interessanten Methoden zum Hinzufügen von Hooks hat, aber ich konnte nicht herausfinden, wie man sie benutzt.

Kann jemand helfen?

Dank

+0

Das ist eine gute Frage - vielleicht ist ein Kopfgeld in Ordnung? (Ich würde gerne eine Antwort geschrieben sehen) – Jared

Antwort

2

Das sollte funktionieren, aber es beruht auf Reflexion unter Verwendung von nicht-API aufrufen, so dass es auf eigene Gefahr.

Verwenden Sie die Reflektion, um Display.addControl() und Display.removeControl() zugänglich zu machen. Verwenden Sie es dann, um dem Display-Objekt das HWND der Windows-Anwendung und das Besitzer-Steuerelement hinzuzufügen. Wenn nun ein Mausbewegungsereignis an die eingebettete Anwendung gesendet wird, sollte das entsprechende Steuerelement ein Mausbewegungsereignis erhalten.

Für eine gute Maßnahme sollten Sie einen DisposeListener auf dem besitzenden Steuerelement hinzufügen und removeControl() aufrufen, damit Ereignisse nicht an den toten HWND gesendet werden.

+0

+1. Hört sich interessant an. Ich hoffe, dass ich das bald ausprobieren kann – paul

Verwandte Themen