- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
開始必須要聲明的,這不是教學文章,只能說是一篇說明文章,作者無法確定內容有無技術上的錯誤,如內容有任何問題,也歡迎寄信給我予以更正
Mail: huge.huang@
設計COM物件(Borland C++ Builder 5)
本篇文章為說明如何實作出一個COM Object的方法。首先點擊BCB視窗界面左上面的File→New(Fig 1),至ActiveX的目錄下新增一個ActiveX Library。
Fig 1
在呼叫出一個新增的ActiveX Library後,接下來假設要完成一個使用在網頁語言內可呼叫的DLL Method,在同一目錄下,選擇Active Server Object(Fig 2)。
Fig 2
在選擇了新增Active Server Object之後,BCB會跳出一個New Active Server Object的視窗(Fig 3)出來,以便讓我們可以將屬性填寫上去
CoClass Name:Active Server Object類別的名字
Threading Model:略
Active Server Type
Page Level Event Methods:略
Object Context:略
Options
Generate a template test script for this object:略
Fig 3
Fig 4
在設定完Active Server Object之後,接下來便是要進行Type Library的設定,在此我們必須完成這一個COM物件所需的輸入及輸出的界面,以此說明文件為例,我要做一個加法的動作,或稱之為一種Method,那麼我就必需有二個輸入及一個輸出,下列便是說明如何設定Type Library的Method
我們看到一個新視窗,一個.tlb的檔案,這個便是一個Type Library,而我們所需要做的,便是設定這一個Library所需要的輸入及輸出,所以我們必須新增一個Method(Fig 4),或者可以在Itest上按右鍵(名稱為Itest是因為剛才在設定CoClass Name的時候,我將之設定為test,而左上角的OPERATOR.tlb則是將原本預設為Project1的專案名稱更改為OPERATOR,而此COM元件的專案名稱便會根據剛剛所設的專案名稱而更改。除了按下視窗上方按下New Method的方法之外,我們也可以在Itest這個icon上面按下滑鼠右鍵,選擇New Method(Fig 5),此兩種方法皆可以達到新增一個Method的目的,而延續下來所要做的動作便是設定這個Method的輸入及輸出了。
Fig 5
接下來我們切換到剛剛所新產生的Method之下(我將Method的name設定為add)。將Text目錄轉移到Parameters目錄之下,我們便是要在此設定此一新增的Method所需要的輸入及輸出。在設定上,必須要注意的是,輸出(output)必須設定為指標型態,也就是 Element_Type *(例:long *),BCB才能夠針對這個輸出做出正確的動作。於是我們藉由add這個Method的定義得知,我們需要有二個輸入及一個輸出(Return Value),所以我們將add設定為二個輸入,分別稱做long(長整數),名稱為in1及in2,而輸出則設定為long *,名稱為output。由於這個output為Return Value,所以在設定的時候,必須勾選為Return Value這個選項,如下圖(Fig 6)。在做完這些之後,記得先把檔案進行儲存。最後要做一個非常重要的動作,那便是Export To IDL,如果沒有做完這個最後的動作,那麼剛剛設定的Method都白費了,關於Export To IDL如下(Fig 7)
Fig 6
Fig 7
按下Export To IDL,接著我們再把程式碼填入即可完成作業,在testImpl.h之下宣告add這個Method
public:
STDMETHOD(OnEndPage());
STDMETHOD(OnStartPage(LPUNKNOWN AScriptingContext));
STDMETHOD(add(long in1, long in2, long* output));
};
藍色的部份便是我們所需要做為add這個 Method這個宣告,接下來,在testImpl.cpp這個檔案之下新增以下的程式
STDMETHODIMP TtestImpl::add(long in1, long in2, long* output)
{
*output = in1+in2;
return S_OK;
}
add這個Method的動
您可能关注的文档
最近下载
- 标准图集-10J301-地下建筑防水构造.pdf VIP
- 2025辽宁丹东市元宝区社区专职工作者招聘23人笔试模拟试题及答案解析.docx VIP
- 第14课+明清时期的经济、科技与文化【中职专用】《中国历史》(高教版2023基础模块).pptx VIP
- 文明交通,携手共创——全国交通安全日主题班会-【中职专用】主题班会课件.pptx
- 2024年中国老年人听力损失与助听器应用调研报告.pdf VIP
- 防范酒驾醉驾及黄赌毒.pptx VIP
- 2021年:历年人大附中新初一分班考试数学部分真题.pdf VIP
- 建设单位风电项目专业标准清单.docx VIP
- CJJT261-2017 城市照明合同能源管理技术规程.docx VIP
- GB+39800.1-2020个体防护装备配备规范 第1部分:总则.docx VIP
文档评论(0)