我知道實際上并沒有內置的介面概念C ,所以為了實作它,必須使用只包含純虛函式的抽象類。
現在,在 Microsoft Windows 的 API 串列中,其中的一些類如
考慮到我需要對介面進行子類化,我嘗試了下面的代碼,但似乎我對子類化有誤:
#include <iostream>
#include <propidl.h>
#include <objidl.h>
class PropertyStorage : IPropertyStorage {};
int main(int argc, char* argv[]){
PropertyStorage ips(); <- function returning abstract class "PropertyStorage" is not allowed
}
說了這么多,我想重申一下
我的問題是:您如何實際使用 Microsoft Windows API 的介面?
uj5u.com熱心網友回復:
您如何實際使用來自 Microsoft Windows 的 API 的介面?
這很簡單:您獲取一個指向介面的指標,然后開始使用它。完成后,你Release()就可以了。簡而言之,這就是 COM。
那么更難的問題是:你如何真正獲得COM介面指標?本質上,有兩種方法可以做到這一點:
呼叫通過介面指標提供 COM 物件的工廠函式。“標準”方式是呼叫
CoCreateInstance. 不太“標準”(盡管越來越普遍)的方法是呼叫專用的工廠函式。例如,要獲得IPropertyStorage可以呼叫StgCreatePropStg(或類似)的介面。這解決了您使用系統(或庫)提供給客戶端使用的 COM 介面的用例。
實作介面,并使用任何你認為合適的方式來實體化這個具體的實作。當使用支持 COM 的 C 編譯器(例如 MSVC)時,這相當于為從介面派生的類提供實作。
這對于您需要撰寫介面的情況很有用,通常由其他人使用。示例包括
IStream或IEnumString。對于問題中要求的介面,情況并非如此。
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/522899.html
標籤:C 视窗温纳皮com
