我在事件触发函数中用了多个接收参数,来接收服务端的反馈消息。
OnRequest( VARIANT myVariant1, VARIANT myVariant2,VARIANT myVariant3, VARIANT myVariant4, VARIANT* myVariant5, VARIANT* myVariant6) 但我现在得到的值,和服务端给我的值不一样。
想问问有没有人做过类似的程序,能指点我以下。
谢谢!
OnRequest( VARIANT myVariant1, VARIANT myVariant2,VARIANT myVariant3, VARIANT myVariant4, VARIANT* myVariant5, VARIANT* myVariant6) 但我现在得到的值,和服务端给我的值不一样。
想问问有没有人做过类似的程序,能指点我以下。
谢谢!
现在感觉是只要连续的两个参数类型相同,则后面那个值就会出问题。
不知道是什么原因。
OnRequest( VARIANT myVariant1, VARIANT myVariant2,VARIANT myVariant3, VARIANT myVariant4, VARIANT* myVariant5, VARIANT* myVariant6)
使用了6个VARIANT 类型来接收不同的消息参数,但我得到的内容和同事程序发给我的不一样。
现在反复实验的结果是,参数多与三个就有问题。有两个连续相同类型的就不行。LONG ,VARIANT ,LONG 这种形式又是可以的。
再试也试不出什么名堂了希望遇到过的人指点一下。
static _ATL_FUNC_INFO OnRequestInfo = {CC_STDCALL, VT_EMPTY, 6 , { VT_VARIANT} };
//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////
class CAppObj : public IDispEventSimpleImpl<0, CAppObj , &__uuidof(IjqtMsgEvents)>
{
public:
CAppObj()
{
} BEGIN_SINK_MAP(CAppObj )
//Make sure the Event Handlers have __stdcall calling convention
SINK_ENTRY_INFO(IDC_SRCOBJ, __uuidof(IjqtMsgEvents), DISPID_ONREQUEST, OnRequest, &OnRequestInfo)
END_SINK_MAP() // Event handler
HRESULT __stdcall OnRequest( VARIANT FunctionCode, VARIANT Header, VARIANT Params,
VARIANT OptionalParams, VARIANT* Returndata, VARIANT* ErrorCode)
{
_variant_t& TMP = (_variant_t&) Header;
if(TMP.vt!=VT_NULL)
{
CString str;
TMP.ChangeType(VT_BSTR);
str=TMP.bstrVal;
MessageBox(NULL, str , "Test", MB_OK);
}
else
{
;
}
return S_OK; }