////////////////////////////////////////////////////////////
//Added Headers:
////////////////////////////////////////////////////////////
#include <comdef.h>
#include <atlbase.h>
///////////////////////////////////////////////////////////
//Added for MSMQ:
///////////////////////////////////////////////////////////
#import "mqoa.dll" no_namespace, named_guids
typedef struct _DATA
{
int _n;
char _str;
}_DATA;
//main:
{
.. ..
.. ..
hr = pisQI->raw_Open(MQ_PEEK_ACCESS,MQ_DENY_NONE,&pisQueue);
IMSMQMessagePtr piMessage;
// 获取MSMQ队列中的一个消息:
piMessage = pisQueue->PeekCurrent();
_DATA *msg = new _DATA();
// 解析函数:
ChangeVariant2Struct(CComVariant(piMessage->Body), msg);
.. ..
}
// ChangeVariant2Struct函数的定义:
// 第一个参数:
// 类型:CComVariant
// 作用:源
// 第二个参数:
// 类型:_DATA*
// 作用:接收者
HRESULT ChangeVariant2Struct (CComVariant &var, _DATA *DP)
{
SAFEARRAY* psa;
BYTE HUGEP *lpb;
psa = var.parray;
SafeArrayAccessData(psa, (void HUGEP **)&lpb);
CopyMemory((LPVOID)DP, (LPVOID)lpb, 8);
SafeArrayUnaccessData(psa);
return S_OK;
} |