5,388
社区成员
发帖
与我相关
我的任务
分享
方法原型声明(部分):
HRESULT AddMsg (
long rectIdx,
_bstr_t Str,
_bstr_t FontName,
short FontSize,
short FontColor,
short nStyle,
short nSpeed,
short nStop,
VARIANT_BOOL FontBold,
VARIANT_BOOL FontItalic,
VARIANT_BOOL FontUnderLine );
HRESULT AddRect (
long nLeft,
long nTop,
long nWidth,
long nHeight );
HRESULT DelRect (
long rectIdx );
HRESULT SetRectRect (
long rectIdx,
long nLeft,
long nTop,
long nWidth,
long nHeight );
long MsgCount (long rectIdx );
_bstr_t MsgItems (
long rectIdx,
long msgIdx );
HRESULT GenerateData (
VARIANT * data );
HRESULT RemoveMsg (
long rectIdx,
long msgIdx );
CoInitialize(NULL); //可放在程序起始处,例如主线程InitInstance函数中
//获取接口指针
CLSID clsid;
CLSIDFromProgID(OLESTR("LEDRect"),&clsid);
CComPtr<ILEDRect> pGetRes;//智能指针
pGetRes.CoCreateInstance(clsid);
//设置参数
pGetRes->Height=32;
pGetRes->Width=64;
pGetRes->Colors=1;
pGetRes->ControllerType = 83;
pGetRes->Line = 1;
pGetRes->ScanningMode=3;
pGetRes->OE=0;
pGetRes->Polarity=0;
pGetRes->AddRect(0,0,32,8); //添加分区1
pGetRes->AddMsg(0,_T("信息显示"),_T("宋体"),16,0,19,3,5,false,false,false);//第一个参数为分区索引
pGetRes->AddRect(0,8,16,8); //添加分 区2
pGetRes->AddMsg(1,_T("信息显示"),_T("宋体"),16,0,19,3,5,false,false,false); pGetRes->Height=32;
pGetRes->SetRectRect(1,0,8,32,8); //修改分区2大小位置,第一个参数为分区索引
//生成数据
SAFEARRAY* pArray=NULL;
HRESULT hr=SafeArrayAllocDescriptor(1,&pArray);
pArray->cbElements=0;
pArray->rgsabound[0].cElements=0;
pArray->rgsabound[0].lLbound=0;
SafeArrayAllocData(pArray);
VARIANT Data;
Data.vt=VT_BYREF|VT_ARRAY;
Data.pparray=&pArray;
HRESULT hResult=pGetRes->GenerateData(&Data); //
//获取生成数据
BYTE *pData=NULL;
SafeArrayAccessData(pArray,(LPVOID *)&pData);
Long lLen=0;
SafeArrayGetUBound(pArray,1,&lLen);
/*
对数据进行处理(注意:数据发送流程请查看下面的数据发送说明部分)
*/
//完成数据发送
SafeArrayUnaccessData(pArray);
SafeArrayDestroy(pArray);
pGetRes->RemoveMsg(0,0); //第一个参数为分区索引
pGetRes->RemoveMsg(1,0);
pGetRes.Release();
CoUninitialize();