如何在Delphi中获得CWnd对象的窗口句柄?

问题描述:

我有史诗编辑器返回的句柄窗口(见下方plugin_1 Java代码):如何在Delphi中获得CWnd对象的窗口句柄?

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

事实上,这种手柄CWnd *指针。它直接传输到本地插件2不起作用。相反,我们必须使用dll与MFC支持呼叫

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

我怎样才能重写这个代码在没有MFC的Delphi?我的意思是从指针提取窗口句柄到CWnd对象。

+0

从VC++以外的任何语言使用的DLL中导出MFC类类型对他们是非常短视的。 – 2012-04-05 22:25:39

你不能用安全的方式在Delphi中编写它。这是因为CWnd是一个C++类,您不能将C++类导入到Delphi代码中。我想你可以对CWnd的内存布局进行逆向工程,但我会对这种方法的智慧表示怀疑。我的建议是坚持使用MFC DLL。