[実行] ボタンのハンドラーを追加します。

[実行] ボタンでダイアログ リソース ファイルを作成は、ハンドラー関数を追加する必要があります。

実行ボタンのハンドラーを作成するには

ハンドラーを作成するには、次の OLE DB コンシューマー テンプレート クラスを使用する必要があります。:

これらの各クラスを COM オブジェクト プロバイダーに対応します。

次のコードを追加します。このハンドラーのコードでは、 CCommandオブジェクトCProviderクラス テンプレート パラメーターとしてかかります。このパラメーターは、プロバイダーによってデータにアクセスするために使用するバインディングを表します。

/////////////////////////////////////////////////////////////////////////TestProvDlg.cppvoid CTestProvDlg::OnRun(){CCommandlt;CAccessor <CProvider> > テーブル;CDataSource ソース;CSession セッション;場合は (ソース。Open("MyProvider.MyProvider.1", NULL) ! S_OK =)戻る;場合 (セッション。Open(source) ! S_OK =)戻る;場合 (テーブル。開く (セッション、_T("c:\\public\\testprf2\\gloo.txt")) ! S_OK =)戻る;(テーブル。MoveNext() S_OK = =){m_ctlString1.AddString(table.szCommand);m_ctlString2.AddString(table.szText);}}

ハンドラー、次に示す 3 つのオープン呼び出し、プロバイダーの 3 つの COM オブジェクトに対応する使用します。それはそのProgIDを使用して、プロバイダーを検索します。システム レジストリからか、プロバイダーのProgIDを取得することができます rgs ファイル ( MyProvider.rgs 、単純な読み取り専用プロバイダーの実装を示す単純なプロバイダーの)。プロバイダーという名前のテキスト ファイルを開きます gloo.txt 、改行で区切られた文字列の数が偶数が含まれるを返します。開いているファイルのパス名、プロバイダーにプロバイダーを文字列として渡す。

   場合は (ソース。Open("MyProvider.MyProvider.1", NULL) ! S_OK =)戻る;場合 (セッション。Open(source) ! S_OK =)戻る;場合 (テーブル。開く (セッション、_T("c:\\public\\testprf2\\gloo.txt")) ! S_OK =)戻り値

データは、ハンドラーの呼び出しを取得する table.MoveNext 、次に示すよう。もう行がない場合は、 DB_S_ENDOFROWSETのプロバイダーを返し、ループを終了します。ループ制御ステートメントは、戻り値S_OKを比較します。SUCCEEDEDマクロ コードを使用する場合は、 DB_S_ENDOFROWSET成功のリターン コードと見なされるため、ループを終了するないです。

   (テーブル。MoveNext() S_OK = =){m_ctlString1.AddString(table.szCommand);m_ctlString2.AddString(table.szText);}

消費者は ( 「単純な読み取り専用プロバイダー実装の構築)、簡易プロバイダーをテストする準備が整いました。

次のトピック、 IRowsetLocateインターフェイスを実装するプロバイダーを拡張で使用する消費者を変更する方法を示しています。

戻る、OLE DB テンプレート コンシューマーを実装するには

Index