亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        基于COM組件技術軟件編程研究

        2010-08-15 00:42:56李巍
        網(wǎng)絡安全技術與應用 2010年10期
        關鍵詞:連接點調用對話框

        李巍

        天津市漢沽區(qū)公用房屋管理所 天津 300480

        0 前言

        隨著Intranet/Intement的飛速發(fā)展,使軟件應用置身于更加廣闊的環(huán)境中,從而對應軟件提出了更高的要求。在這樣的環(huán)境下,面向對象的思想已經(jīng)難以適應這種分布式的軟件模型,于是組件化程序設計思想得到了迅速的發(fā)展。

        按照組件化程序設計的思想,復雜的應用程序被設計成一些小的、功能單一的組件模塊,這些組件模塊可以運行在同一臺機器上,也可以運行在不同的機器上,甚至可以是不同的操作系統(tǒng)。為了實現(xiàn)這樣的應用軟件,組件程序和組件程序之間需要一些極為細致的規(guī)范,只有組件程序遵守了這些共同的規(guī)范,軟件系統(tǒng)才能正常的運行。為此,OMG(Object Management group,對象管理組織)和Microsoft分別提出了CORBA和COM(Component Object Model,組件對象模型)標準,目前CORBA模型主要應用于UNIX操作系統(tǒng)平臺,而COM則主要應用于Microsoft Windows操作系統(tǒng)平臺上。

        1 COM的實現(xiàn)原理

        1.1 COM組件的注冊操作

        Windows系統(tǒng)提供了一個用于注冊進程內(nèi)組件的使用工具Regsvr32.exe,只要進程內(nèi)組件提供了相應的入口函數(shù),則Regsvr32就可以完成注冊或稱注銷,而Regsvr32程序本身并不進行注冊工作。

        除了利用Regsvr32程序進行注冊之外,還有其他一些安裝程序在安裝或卸載的過程中也可以調用組件程序中的DLLRegisterServer函數(shù)和DLLUnregisterServer函數(shù)完成組件程序的注冊和注銷操作。

        1.2 COM庫

        COM本身除了規(guī)范以外,也有實現(xiàn)的部分,其中包括一些核心的系統(tǒng)級代碼,也正是這部分核心代碼,才使得對象和客戶之間可通過接口在二進制代碼級進行交互。在Microsoft Windows操作系統(tǒng)環(huán)境下,這些庫以.DLL文件的形式存在,其中包括以下內(nèi)容:

        (1)提供了少量的API函數(shù)實現(xiàn)客戶和服務器端COM應用的創(chuàng)建過程。在客戶端,主要是一些創(chuàng)建函數(shù);而在服務器端,提供一些對對象的訪問支持。

        (2)COM通過注冊表查找本地服務器即EXE程序,以及程序名與CLSID的轉換等。

        (3)提供了一種標準的內(nèi)存控制方法,使應用控制進程中內(nèi)存的分配。

        2 可連接對象程序的設計

        2.1 基本設計

        設計接收器對象與連接點對象之間如何建立關系的過程,這個過程是由客戶方控制的,所以客戶首先詢問對象是公為可連接對象,它只需調用對象的QueryInterface成員函數(shù),請求IConnection pointContainer接口,如果請求成功,則表明為可連接對象,并返IConnection pointContainer接口指針,否則說明對象不是可連接對象??蛻舻玫搅薎Connection pointContainer接口后,調用其成員函數(shù)獲取出接口的連接點對象,如果對象支持此出接口,則可以得到連接點對象,然而調用連接點對象的IConnection point接口的成員函數(shù)建立連接。如果客戶要取消連接,同樣調用IConnection point接口的成員函數(shù)即可。

        2.2 具體設計

        首先在應用類的InitInstance成員函數(shù)中加入COM或OLB庫初始化函數(shù),InitInstance函數(shù)開始處理調用AfxOleInit輔助函數(shù)代碼如下:

        BOOL CTestCtrlApp::InitInstance()

        {

        // Initialize OLE libraries

        if(!AfxOleInit())

        {

        AfxMessageBox("Initializing OLE library failed");

        return FALSE;

        }

        AfxEnableControlContainer();

        為對話框類加入內(nèi)嵌的接受對象,因為對話框類也是從CCmdtarget派生而來的,所以在對話框類中可以使用BEGIN_INTERFACE_PART/END_INTERFACE_PART宏定義接受器對象類。定義接受器對象類:

        BEGIN_INTERFACE_PART(EventSink,IDispatch)

        INIT_INTERFACE_PART(CTestCtrlDlg,EventSink)

        STDMETHOD(GetTypeInfoCount)(unsigned int*);

        STDMETHOD(GetTypeInfo)(unsigned int,LCID,ITypeInfo**);

        STDMETHOD(GetIDsOfNames)(REFIID,LPOLESTR*,unsigned int,LCID,DISPID*);

        STDMETHOD(Invoke)(DISPID,REFIID,LCID,unsigned short,DISPPARAMS*,

        VARIANT*,EXCEPINFO*,unsigned int*);

        END_INTERFACE_PART(EventSink)

        對話框的操作,首先,在InitInstance成員函數(shù)中加入如下創(chuàng)建源對象的代碼:

        GUID sourceobjCLSID;

        HRESULThResult=::CLSIDFromProgID(L"SourceComp.S ourceObj",&sourceobjCLSID); if(FAILED(hResult))

        {

        return FALSE;

        }

        hResult = CoCreateInstance(sourceobjCLSID,NULL,

        CLSCTX_INPROC_SERVER,IID_IDispatch,(void**)&m_pDispatch);

        if(FAILED(hResult))

        {

        return FALSE;

        }

        按照消息控制函數(shù)0nConnection和OnDisconnection分別調用輔助函數(shù)Connection和Disconnection作為響應,并根據(jù)不同的返回值進行不同的處理。

        按鈕消息控制Onsetproperty為源對象的屬性賦值,在賦值之后,源對象會引發(fā)事件。

        所以,在連接已經(jīng)建立的狀態(tài)下,當用戶按下“設置屬性”按鈕時,會出現(xiàn)事件響應消息框。

        最后我們還必須對對話框類的析構函數(shù)中的清除工作,包括斷開連接、釋放源對象等操作。在CTestCtrlDlg析構函數(shù)加入下面代碼:

        if(m_pDispatch != NULL){

        if(m_dwCookie != 0)

        Disconnection();

        m_pDispatch->Release();

        }

        3 結論

        在VC++環(huán)境下COM的編程,VC++對CO3M開發(fā)提供了很好的支持,技術非常成熟,功能非常強大,使用VC++可以開發(fā)出功能強大,接口集合度高,占用資源少的應用程序。使用VC++的MFC類,模板類,以及AppWizard,ClassWizard等用于產(chǎn)生應用程序的特點,加快應用程序的設計,用組件技術可以很好地開發(fā)出一個完整的應用程序。

        [1]蘇長齡.C/C++程序設計教程.中國水利水利出版社.2007.

        [2][美]帕拉特著.COM精髓.信達工作室譯.2001.

        [3]吳金平.VisualC++6.0編程與實踐.中國水利水電出版社.2001.

        猜你喜歡
        連接點調用對話框
        基于A3航攝儀的小基高比影像連接點精提取技術研究
        正?;謴吞摂M機
        核電項目物項調用管理的應用研究
        Bootlace Worms’Secret etc.
        中學科技(2018年12期)2018-12-19 11:22:28
        LabWindows/CVI下基于ActiveX技術的Excel調用
        測控技術(2018年5期)2018-12-09 09:04:46
        基于彈性厚粘膠層的結構性連接點響應建模和預測
        汽車文摘(2016年6期)2016-12-07 00:23:38
        基于系統(tǒng)調用的惡意軟件檢測技術研究
        基于相關性篩選原理的公共連接點諧波畸變量的分層量化
        電測與儀表(2015年3期)2015-04-09 11:37:22
        顏學海:把握投資創(chuàng)新與模式創(chuàng)新的連接點
        利用RFC技術實現(xiàn)SAP系統(tǒng)接口通信
        人妻丰满少妇一二三区| 中国丰满熟妇xxxx| 久久伊人影院| 99精品国产av一区二区| 亚洲国产中文字幕精品| 欧美性xxxx极品高清| 日本一区二区精品88| 午夜日本精品一区二区| 亚洲一区二区在线观看免费视频| 少妇高潮惨叫久久久久久电影 | 加勒比特在线视频播放| 蜜桃18禁成人午夜免费网站| 少妇被猛男粗大的猛进出| 免费看一级a女人自慰免费| 国产一区二区av男人| 亚洲伦理第一页中文字幕| 久久久久女人精品毛片| 国产激情视频在线观看首页| 国产精品人成在线观看不卡| 边添小泬边狠狠躁视频| 131美女爱做视频| 久久亚洲精彩无码天堂 | 亚洲麻豆视频免费观看| 亚洲第一se情网站| 日韩一区二区超清视频| 亚洲av男人的天堂在线| 夜夜高潮夜夜爽国产伦精品| 亚洲久热无码av中文字幕| 日韩精品视频在线一二三| 蜜桃av噜噜一区二区三区策驰| 老外和中国女人毛片免费视频| 精品少妇人妻成人一区二区| 亚洲精品在线一区二区| 国产av一区二区精品凹凸| 首页动漫亚洲欧美日韩| 亚洲人妻av在线播放| 国产成人精品无码片区在线观看 | 亚洲欧美日韩综合一区二区| 国产肉体ⅹxxx137大胆| av毛片一区二区少妇颜射| 日韩人妻另类中文字幕|