C++からVB.NET DLLの関数にDate型で値を渡すならCOleDateTimeを使う

[VC][VB][COM]

どうも内部はdoubleの値となっているようで、それを渡せればOKみたい。

#include "ATLComTime.h"

…


 DISPPARAMS params;
 ::memset(&params, 0, sizeof(DISPPARAMS));
 
 params.cNamedArgs = 0;
 params.rgdispidNamedArgs = NULL;
 params.cArgs = 1;		// パラメータ数
 VARIANTARG* pVarg = new VARIANTARG[params.cArgs];
 
 COleDateTime datetime;
 datetime.SetDateTime(2013, 12, 18,10,59,55);
 
 pVarg[0].vt = VT_DATE;
 pVarg[0].date = datetime;
 
 params.rgvarg = pVarg;
 
 //      return値用
 VARIANT         vRet;
 VariantInit(&vRet);
 
 //.NET DLLを COMで呼ぶ
 pDisp->Invoke(dispid, IID_NULL, LOCALE_SYSTEM_DEFAULT, DISPATCH_METHOD, &params, &vRet, NULL, NULL);
 
 …

ネタ元