VC调用COM的源码,怎么转DELPHI

zhang3652 2014-04-03 10:21:09
接口真心没弄过,VC也不太懂,这复杂点的调用,玩不转了。
麻烦会的帮忙说下
COM组件,DLL。

方法原型声明(部分):
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();
...全文
121 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
sololie 2014-04-04
  • 打赏
  • 举报
回复
LS 已解答
sparklerl 2014-04-04
  • 打赏
  • 举报
回复
delphi加载com后会自己生成,不需要自己写
boylafong 2014-04-04
  • 打赏
  • 举报
回复
调用com口用delphi自己的方法,其他的都是一些结构赋值么? 里面有些函数,转成delpi就好了。
wangyang4506 2014-04-04
  • 打赏
  • 举报
回复
在Component --》import component--》import atype library -->add 选中那个DLL 一路确定. DLL就变成一个控件类,直接拖控件调用。然后 开始运行 regsvr32  *.dll  注册下。
wangyang4506 2014-04-04
  • 打赏
  • 举报
回复
COM 的DLL 可以安装成控件调用,很简单。

5,388

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧