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

时间:2012-04-05 07:47:41

标签: delphi visual-c++ mfc handle cwnd

我有Epic Editor,它返回窗口的句柄(参见下面的plugin_1中的Java代码):

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

实际上,这个句柄是CWnd *指针。它直接转移到本机plugin_2不起作用。相反,我们必须通过调用

使用带有MFC支持的dll
HWND __stdcall GetHandle(CWnd *cp)
{
 HWND hWnd = cp->GetSafeHwnd();
 return hWnd; 
}

如何在没有MFC的情况下在Delphi中重写此代码?我的意思是从指向CWnd对象的指针中提取窗口句柄。

1 个答案:

答案 0 :(得分:3)

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