您的位置:首页 > 大数据 > 人工智能

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

2005-09-05 17:36 405 查看
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一年后--“我心依旧”见证!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
相关文章推荐