名前 題名 ▼ Mr.XRAYさん > > インターフェイス(Interface)関係の実装は難しいですよ. > > 何かの参考に,ならないかな? > > 例えば,TInterfacedObjectを継承した,ICommDlgBrowserの機能を利用する > インターフェイスオブジェクトを実装するには, > ShlObj.pasのICommDlgBrowserに3つの関数があります.これをコピーしてコード > に貼り付けて,実現部を作成し,それぞれの関数の役割をネット(MSDNも含む)で > 調べて書いていくことになります. > まず,目的の動作のために,どんなインターフェイスが必要なのかも調べなければ > なりません. > ハッキリ言って,気が遠くなります. > > ShlObj.pas内のICommDlgBrowse部分 > > type > ICommDlgBrowser = interface(IUnknown) > [SID_ICommDlgBrowser] > function OnDefaultCommand(const ppshv: IShellView): HResult; stdcall; > function OnStateChange(const ppshv: IShellView; Change: ULONG): HResult; stdcall; > function IncludeObject(const ppshv: IShellView; pidl: PItemIDList): HResult; stdcall; > end; > > コピーして貼り付け > > > unit Unit1; > > interface > > uses > Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, > Dialogs, ShlObj; > > type > TplMyInterface = class(TInterfacedObject, ICommDlgBrowser) > private > public > function OnDefaultCommand(const ppshv: IShellView): HResult; stdcall; > function OnStateChange(const ppshv: IShellView; Change: ULONG): HResult; stdcall; > function IncludeObject(const ppshv: IShellView; pidl: PItemIDList): HResult; stdcall; > end; > > > TForm1 = class(TForm) > private > { Private 宣言 } > public > { Public 宣言 } > end; > > var > Form1: TForm1; > > implementation > > {$R *.dfm} > > { TplMyInterface } > > function TplMyInterface.IncludeObject(const ppshv: IShellView; > pidl: PItemIDList): HResult; > begin > //ここに必要な処理を書く > //Result := E_NOTIMPL; > end; > > function TplMyInterface.OnDefaultCommand(const ppshv: IShellView): HResult; > begin > //ここに必要な処理を書く > //Result := S_FALSE; > end; > > function TplMyInterface.OnStateChange(const ppshv: IShellView; > Change: ULONG): HResult; > begin > //ここに必要な処理を書く > //Result := S_OK; > end; > > end. GIF,JPEG,PNG画像ファイル及びLZH,ZIPファイルをアップロードできます.600 x 1200 ピクセルを超える画像は縮小表示されます(画像クリックで拡大表示). (上限122000(120k)バイト) 削除キー Link