国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

COM程序編寫入門(全文-2)

2019-11-18 18:21:35
字體:
來源:轉載
供稿:網友

COM的理論

以實例來講

COM的接口(Interface)是COM的核心,所有的COM接口都是通過IUnknown派生出來的,它告知客戶那些接口是有效的,即已經被實現類說定義。它定義的一般方式如下:
ISimpleInterface=Interface(IUnknown)
      Function GetName:String
       PRocedure SetName(v_Name:String)
       End;
如果在上面的接口中加入這樣一行:
ISimpleInterface=Interface(IUnknown)
       V_Name:String;
       Function GetName:String
       Procedure SetName(v_Name:String)
       End;
這樣是不被允許的,因為上面我們說到接口方法就像是一個占位符,需要實現類引出才有實際意義,v_Name:String這一句只是一個數據成員將永遠無任何意義,如果要定義也只能在實現類中定義。
現在舉一個COM的例子,沒有什么實際用處但至少說明問題:
unit Unit1;
 
interface
 
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;
 
type
  TForm1 = class(TForm)
    Label1: TLabel;
    Edit1: TEdit;
    Button1: TButton;
    Button2: TButton;
    procedure FormCreate(Sender: TObject);
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
  private
    { Private declarations }
  public
    { Public declarations }
  end;
 
  ISimpleInterface=Interface(IUnknown)
    Procedure SetValue(v_Value:Integer);
    Function GetValue:Integer;
  End;
 
  TSimpleImple=Class(TInterfacedObject,ISimpleInterface)
  Public
    Value:Integer;
    Procedure SetValue(v_Value:Integer);
    Function GetValue:Integer;
  End;
 
var
  Form1: TForm1;
  v_Obj:TSimpleImple;
implementation
 
{$R *.dfm}
 
{ TSimpleImple }
 
function TSimpleImple.GetValue: Integer;
begin
  Result:=Value;
end;
 
procedure TSimpleImple.SetValue(v_Value: Integer);
begin
  Value:=v_Value;
end;
 
procedure TForm1.FormCreate(Sender: TObject);
begin
  v_Obj:=TSimpleImple.Create;
end;
 
procedure TForm1.Button1Click(Sender: TObject);
begin
  v_Obj.SetValue(StrToInt(Edit1.Text));
  Edit1.Clear;
end;
 
procedure TForm1.Button2Click(Sender: TObject);
begin
  Edit1.Text:=IntToStr(v_Obj.GetValue);
end;
 
procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
  v_Obj.Free;
end;
 
end.
藍色字樣即定義了一個接口,在形式上在ISimpleInterface(接口定義)和TSimpleImple(實現類)幾乎定義都差不多,但是我要強調的是,接口定義是為了實現OLE方式的訪問,而實現類的定義,是接口功能的實現。兩者在功能和實現上都是有區別的。
 
(待續…)

上一篇:COM程序編寫入門(全文-3)

下一篇:COM程序編寫入門(全文-1)

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
學習交流
熱門圖片

新聞熱點

疑難解答

圖片精選

網友關注

主站蜘蛛池模板: 郴州市| 罗源县| 饶阳县| 安吉县| 毕节市| 陕西省| 乡宁县| 克山县| 南汇区| 三穗县| 高密市| 思南县| 永登县| 仲巴县| 莆田市| 漠河县| 阆中市| 明溪县| 广德县| 恩平市| 泸定县| 富川| 昭苏县| 莎车县| 墨脱县| 岳池县| 从化市| 县级市| 齐齐哈尔市| 米脂县| 连州市| 博客| 肇庆市| 斗六市| 静安区| 海盐县| 莆田市| 武邑县| 仁怀市| 青田县| 常山县|