国产一级a片免费看高清,亚洲熟女中文字幕在线视频,黄三级高清在线播放,免费黄色视频在线看

打開APP
userphoto
未登錄

開通VIP,暢享免費電子書等14項超值服

開通VIP
VS2010 簡單ATL COM開發(fā)(下)
分類: COM 2013-04-08 15:11 6111人閱讀 評論(7) 收藏 舉報

前面一章介紹了怎么創(chuàng)建ATL COM組件及注冊,下面簡單介紹如何調(diào)用COM組件。

1、在MFC中調(diào)用有一種很方便的方法,就是通過ClassWizard利用類型庫生成包裝類,不過有個前提就是com組件的接口必須是派生自IDispatch。
具體方法:
(1)VS2010新建一個MFC基于對話框程序,調(diào)出類向?qū)?,點擊“添加類”下拉菜單,選擇“類型庫中的MFC類”(From a type libarary)。

(2)選“注冊表”,然后在“可用類型庫”中定位到FirstCOMLib<1.0>,接下來會出來該庫中的所有接口,選擇你想生成的接口包裝類IFirstClass后點擊“完成”,向?qū)詣由上鄳?yīng)的.h文件,這樣你就可以在你的MFC工程中像使用普通類那樣使用COM組件了.
(3)代碼編寫:

首先引入頭文件  #include "CFirstClass.h"

為對話框程序添加一個“測試”按鈕,添加按鈕單擊響應(yīng)函數(shù)

  1. void CFirstCOMTestDlg::OnBnClickedButton1()  
  2. {  
  3.     // TODO: 在此添加控件通知處理程序代碼  
  4.     CoInitialize(NULL);  
  5.     CFirstClass m_mymath;  
  6.     if (!m_mymath.CreateDispatch(_T("FirstCOM.math.1")))//創(chuàng)建COM對象:這里的字符串一定要和注冊表中的ProgID一致!!!   
  7.     {  
  8.         MessageBox(_T("創(chuàng)建COM組件失敗:請檢查ProgID是否正確,組件是否已經(jīng)注冊"));  
  9.         return;  
  10.     }  
  11.     else  
  12.     {  
  13.         long ret = m_mymath.Add(1,2);//調(diào)用COM接口   
  14.         CString strTemp;  
  15.         strTemp.Format(_T("%d"),ret);  
  16.         MessageBox(strTemp);  
  17.     }  
  18.     CoUninitialize();  
  19. }  

關(guān)于m_mymath.CreateDispatch(_T("FirstCOM.math.1")) 中字符串"FirstCOM.math.1",其實跟我們上一章中定義類時ProgID有關(guān),如果忘記,可以在FirstClass.rgs文件里找,rgs是組件注冊的腳本文件,當(dāng)你用 Regsvr32.exe注冊組件時,組件內(nèi)部便是調(diào)用了這個文件。rgs文件是以資源的形式存于DLL內(nèi)的。
  1. HKCR  
  2. {  
  3.     FirstCOM.math.1 = s 'FirstClass Class'  
  4.     {  
  5.         CLSID = s '{C56D80DE-DA4C-4731-81A6-48B8D0BDB2FD}'  
  6.     }  
  7.     FirstCOM.math = s 'FirstClass Class'  
  8.     {         
  9.         CurVer = s 'FirstCOM.math.1'  
  10.     }  

其中 CurVer=s'FirstCOM.math.1' 中的 FirstCOM.math.1 就是我們需要的那個字符串。

(4)編譯運行,點擊測試按鈕,結(jié)果如下:



2、在SDK中調(diào)用最簡單最常用的一種,用#import導(dǎo)入類型庫,利用VC提供的智能指針包裝類

VS2010創(chuàng)建Win32控制臺應(yīng)用程序,編寫如下代碼:

  1. #include "stdafx.h"  
  2.   
  3. #include "atlcomcli.h"  
  4. #import "FirstCOM.dll" no_namespace  
  5.   
  6. int _tmain(int argc, _TCHAR* argv[])  
  7. {  
  8.     CoInitialize(NULL);  
  9.     CLSID clsid;  
  10.     CLSIDFromProgID(OLESTR("FirstCOM.math.1"),&clsid);  
  11.     CComPtr<IFirstClass> pFirstClass;//智能指針  
  12.     pFirstClass.CoCreateInstance(clsid);  
  13.     long ret = pFirstClass->Add(1,2);  
  14.     printf("%d\n",ret);  
  15.     pFirstClass.Release();  
  16.     CoUninitialize();  
  17.   
  18.     return 0;  
  19. }  
其中頭文件atlcomcli.h中定義了智能指針CComPtr。

運行結(jié)果:


還有一些調(diào)用COM組件的方法,參見VC調(diào)用COM組件。

本站僅提供存儲服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊舉報。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
COM 組件設(shè)計與應(yīng)用(十一)
IE內(nèi)核瀏覽器開發(fā)筆記
[筆記]COM組件初識
com技術(shù)內(nèi)幕
零基礎(chǔ)學(xué)習(xí)COM之COM庫和類廠介紹
Win XP系統(tǒng)故障實用修復(fù)方法
更多類似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長圖 關(guān)注 下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點擊這里聯(lián)系客服!

聯(lián)系客服