gpt4 book ai didi

c++ - 将 Windows 句柄传递到非托管 C++ dll

转载 作者:行者123 更新时间:2023-11-30 04:40:45 26 4
gpt4 key购买 nike

一个非托管的 C++ dll 有一个导出的函数,它采用一个 int 类型作为窗口 hanlde

void SetWindowHandle(int nHandle);

否则在非托管 dll 代码中,int 被转换为 HWND 并被正确使用。

在 Windows 窗体应用程序中,我按如下方式设置句柄

_hHandle = this->Handle.ToInt32();
m_pViewer->SetWindowHandle(_hHandle);

其中 _hHandle 是类内部的私有(private)成员。我得到的句柄正确吗?看起来是这样,但显然应用程序没有提供所需的输出。我怀疑问题出在 handle 上。

PS:我可以访问非托管 dll,因此我可以在其中进行修改以进行任何建议的更改。

最佳答案

从表面上看,没有任何问题。您还没有显示整个 .Net 声明。需要注意的一件事是调用约定需要匹配。 DLL 的常用调用约定是 stdcall,但这不是 C++ 中的默认调用约定。您必须请求它,通常是使用 WINAPI 宏,就像您在所有 Windows header 中看到的那样。

既然您可以访问调用的双方,为什么不使用调试器 来查明您是否正确获取了句柄?设置断点并检查变量的值,或者将值打印到调试控制台或文件并检查结果。

关于c++ - 将 Windows 句柄传递到非托管 C++ dll,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/795297/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com