我需要使用 COPYDATASTRUCT 将 VARIANT 值发送到另一个应用程序。这是我用来发送消息的结构。
struct {
int i_MsgId;
VARIANT variant_Value;
}Message;
在我的代码中,我将 VARIANT 初始化为类型 BSTR 并分配一个字符串,如下所示。
Message structMessage;
VariantInit(&structMessage.variant_Value);
structMessage.var_Value.vt = VT_BSTR;
structMessage.variant_Value.bstrVal = ::SysAllocString(L"I am a happy BSTR");
然后我使用 COPYDATASTRUCT 发送它,如下所示。
COPYDATASTRUCT structCDS;
structCDS.cbData = sizeof(structMessage);
structCDS.dwData = 12;
structCDS.lpData = (LPVOID)(&structMessage);
::SendMessage(this->m_RemoteWindow,WM_COPYDATA,(WPARAM)this->GetSafeHwnd(),(LPARAM)&structCDS);
此消息成功接收到我的第二个应用程序,但是,当我将其转换回原始结构时,“bstrVal”表示错误的指针。
我正在努力解决这个错误,所以期待您的宝贵帮助。请注意,其他 varinat 类型(int、double)可以成功转换回来,并且此错误仅与 bstr 相关。:(
谢谢你