【发布时间】:2021-08-20 13:58:33
【问题描述】:
根据此示例,我正在使用重写的 WndProc 来完成进程间通信: https://docs.microsoft.com/en-us/windows/win32/dataxchg/using-data-copy 我对发件人没有问题,这很好用。但是,只要我想获取 LParam 的内容,我就无法编译它,我根本不明白是什么导致了问题。
protected:
[SecurityPermission(SecurityAction::Demand, Flags = SecurityPermissionFlag::UnmanagedCode)]
virtual void WndProc(Message %m) override
{
PCOPYDATASTRUCT pMyCDS;
// Listen for operating system messages.
switch (m.Msg)
{
case WM_COPYDATA:
pMyCDS = (PCOPYDATASTRUCT)m.lParam; //doesn't work: Failure: E0413 no suitable conversion function from "System::IntPtr" to "PCOPYDATASTRUCT" exists
break;
}
}
如果我只是在 WM_COPYDATA 案例中做一些其他的事情,我可以确认事件触发了,但是我当然需要获取 lParam 的内容。如何将 lParam 的内容复制或转换为 COPYDATASTRUCT?
我正在使用 Visual Studio 2019。
【问题讨论】:
-
嗯。托管 C++ 不是我的强项,也许您不应该使用“原始”指针。但是,将 via 转换为
void*会删除错误消息:pMyCDS = (PCOPYDATASTRUCT)(void*)m.lParam;。 注意事项 -
这似乎有效!非常感谢!
标签: c++ visual-studio managed-c++