IDispatch介面元件的簡單實現

2021-04-15 01:41:40 字數 2756 閱讀 7430

math.h

////

math.h 

////

access to the global variables

extern

dword g_dwobjs;

extern

dword g_dwlocks;

define_guid( clsid_math,

0xa988bd40

,0x9f1a

,0x11ce

,0x8b

,0x9f

,0x10

,0x00

,0x5a

,0xfb

,0x7d

,0x30

);const

intdispid_add =1

;const

intdispid_subtract =2

;const

intdispid_multiply =3

;const

intdispid_divide =4

;class

math : 

public

idispatch               // 對於雙介面 ==> class

math : 

public

imath

;class

mathclassfactory : 

public

iclassfactory;

math.cpp

////

math.cpp

////

#include 

<

windows.h

>

#include 

<

stdio.h

>

#include 

<

stdlib.h

>

#include 

<

string

.h>

#include 

<

ctype.h

>

#include 

"math.h"

//math class implementation

////constructors

math::math()

math::

~math()

//iunknown implementation

stdmethodimp math::queryinte***ce( refiid riid, 

void

**ppv )

return

e_nointe***ce;

}stdmethodimp_(ulong) math::addref()

stdmethodimp_(ulong) math::release()

//idispatch implementation

stdmethodimp math::gettypeinfocount( uint

*pctinfo )

stdmethodimp math::gettypeinfo( uint itinfo,

lcid lcid,

itypeinfo

**pptinfo )

stdmethodimp math::getidsofnames( refiid riid,

olechar

**rgsznames,

uint cnames,

lcid lcid,

dispid

*rgdispid )

stdmethodimp math::invoke( dispid dispid,

refiid riid,

lcid lcid,

word wflags,

dispparams far

*pdispparams,

variant far

*pvarresult,

excepinfo far

*pexcepinfo,

unsigned 

intfar

*puargerr )

else

return

s_ok;

switch

( dispid )}

//mathclassfactory class implementation

mathclassfactory::mathclassfactory()

mathclassfactory::

~mathclassfactory()

stdmethodimp mathclassfactory::queryinte***ce( refiid riid, 

void

**ppv )

return

(e_nointe***ce);

}stdmethodimp_(ulong) mathclassfactory::addref()

stdmethodimp_(ulong) mathclassfactory::release()

stdmethodimp mathclassfactory::createinstance

( lpunknown punkouter, refiid riid, 

void

**ppvobj )

stdmethodimp mathclassfactory::lockserver( bool flock )

IDispatch 介面和雙介面

二 idispatch 介面和雙介面 使用者要想呼叫普通的 com 元件功能,必須要載入這個元件的型別庫 type library 檔案 tlb 比如在 vc 中使用 import 然而,在指令碼程式中,由於指令碼是被解釋執行的,所以無法使用載入型別庫的方式進行預編譯。那麼指令碼直譯器如何使用 co...

簡談 介面適配

做一款軟體首先是要做出相應的介面,然而對於手機軟體開發者來說,大小各異的手機螢幕卻給我們帶來了不少的麻煩。html5技術在大家的心中要比傳統的android ios wp簡單的多,因為它的適配性和平台跨越方面比較出色。在外看來卻不是那樣的,跨平台的問題暫且不說,其螢幕適配方面並不比原生態 簡單。下面...

hadoop核心元件zookeeper簡介與特點

zookeeper是乙個針對大型分布式系統的可靠協調系統。1 它提供的功能包括 配置維護,名字服務,分布式同步,組服務等 2 它的目標就是封裝好複雜易出錯的關鍵服務,將簡單易用的介面和效能高效,功能穩定的系統提供給使用者 特點 1,最終一致性 為客戶端展示同一試圖 2,可靠性 如果一條訊息被一台伺服...