2012-04-05 4 views
0

Ich habe Epic Editor, das einen Griff zum Fenster zurückgibt (siehe Java-Code von plugin_1 unten):Wie kann ich ein Fensterhandle des CWnd-Objekts in Delphi bekommen?

int handle = com.arbortext.epic.Application.getActiveWindow().getNativeHandle(); 

In der Tat, dieser Griff ist CWnd * Zeiger. Die direkte Übertragung auf das native plugin_2 funktioniert nicht. Stattdessen müssen wir dll mit MFC-Unterstützung mit dem Aufruf

HWND __stdcall GetHandle(CWnd *cp) 
{ 
HWND hWnd = cp->GetSafeHwnd(); 
return hWnd; 
} 

Wie kann ich diesen Code in Delphi neu zu schreiben, ohne MFC verwenden? Ich meine die Extraktion des Fenstergriffs vom Zeiger zum CWnd Objekt.

+0

Das Exportieren von MFC-Klassentypen aus einer DLL, die aus einer anderen Sprache als VC++ verwendet werden sollte, war für sie kurzsichtig. –

Antwort

3

Sie können dies nicht in Delphi in einer sicheren Weise schreiben. Das liegt daran, dass CWnd eine C++ - Klasse ist und Sie C++ - Klassen nicht in Delphi-Code importieren können. Ich nehme an, Sie könnten das Speicherlayout von CWnd zurückentwickeln, aber ich wäre sehr skeptisch gegenüber der Weisheit, diesen Ansatz zu sprechen. Meine Empfehlung wäre, bei der MFC-DLL zu bleiben.