取自动化Com组件所有的方法、属性名称

王朝other·作者佚名  2006-01-10
窄屏简体版  字體: |||超大  

Author:zfive5(zhaozidong)

Email :zfive5@yahoo.com.cn

最近由于工作原因,一直在接触com自动化的东西,一个字妙不可言,在这方面的长进也是这几个月来体会到的,废话不说了,代码来也......

#include "comdef.h"

void CTest1Dlg::OnOK()

{

// TODO: Add extra validation here

::CoInitialize(NULL);

{

COleDispatchDriver app;

if(!app.CreateDispatch("Excel.Sheet"))

{

::CoUninitialize();

return;

}

ITypeInfo *pType=NULL;

UINT nCount;

app.m_lpDispatch->GetTypeInfo(0,0,&pType);

app.m_lpDispatch->GetTypeInfoCount(&nCount);

FUNCDESC *pfunc;

VARDESC *pVar;

CString str="";

CString str1="";

CEdit *pWnd1=NULL;

CEdit *pWnd2=NULL;

pWnd1=(CEdit *)GetDlgItem(IDC_EDIT1);

pWnd2=(CEdit *)GetDlgItem(IDC_EDIT2);

for(int i=0;i>=0;i++)

{

if(pType->GetFuncDesc(i,&pfunc)!=S_OK)

{

break;

}

BSTR bstrName,bstrDoc;

DWORD id;

pType->GetDocumentation(pfunc->memid,&bstrName,&bstrDoc,&id,NULL);

str=bstrName;

str+=" ";

if(pfunc->invkind==DISPATCH_METHOD)

{

char buf[20];

str+=_bstr_t(itoa(pfunc->cParams,buf,10));

pWnd1->GetWindowText(str1);

str1+=str;

str1+="\r\n";

pWnd1->SetWindowText(str1);

}

else if(pfunc->invkind==INVOKE_PROPERTYGET)

{

pWnd2->GetWindowText(str1);

str1+=str;

str1+=" ";

str1+="GET";

str1+="\r\n";

pWnd2->SetWindowText(str1);

}

else if(pfunc->invkind==INVOKE_PROPERTYPUT)

{

char buf[20];

str+=_bstr_t(itoa(pfunc->cParams,buf,10));

pWnd2->GetWindowText(str1);

str1+=str;

str1+=" ";

str1+="PUT";

str1+="\r\n";

pWnd2->SetWindowText(str1);

}

else

{

char buf[20];

str+=_bstr_t(itoa(pfunc->cParams,buf,10));

pWnd2->GetWindowText(str1);

str1+=str;

str1+=" ";

str1+="REF";

str1+="\r\n";

pWnd2->SetWindowText(str1);

}

pType->ReleaseFuncDesc(pfunc);

}

}

::CoUninitialize();

}

这几天正在饿补《com原理与应用》,4年前的书!:(

对了此文为blog一年后--“我心依旧”见证!

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
 
© 2005- 王朝網路 版權所有 導航