EDITSTREAMCALLBACK
コールバックシグネチャ
DWORD EDITSTREAMCALLBACK(
UINT_PTR dwCookie,
BYTE* pbBuff,
INT cb,
INT* pcb
);パラメーター
| フィールド | 型 | 説明 |
|---|---|---|
| dwCookie | UINT_PTR | EDITSTREAM 構造体の dwCookie メンバーの値です。アプリケーションは、EM_STREAMIN メッセージまたは EM_STREAMOUT メッセージを送信するときに、この値を指定します。 |
| pbBuff | BYTE* | 読み取り元、または書き込み先のバッファーへのポインターです。ストリームイン (読み取り) 操作では、コールバック関数は、リッチエディットコントロールへ転送するデータをこのバッファーに格納します。ストリームアウト (書き込み) 操作では、バッファーにはコントロールから取得したデータが格納されており、コールバック関数はそれを何らかのストレージに書き込みます。 |
| cb | INT | 読み取り、または書き込みを行うバイト数です。 |
| pcb | INT* | 実際に読み取られた、または書き込まれたバイト数をコールバック関数が設定する変数へのポインターです。 |
公式ドキュメント
EditStreamCallback 関数は、EM_STREAMIN メッセージおよび EM_STREAMOUT メッセージと共に使用される、アプリケーション定義のコールバック関数です。リッチエディットコントロールへ、またはリッチエディットコントロールからデータのストリームを転送するために使用します。EDITSTREAMCALLBACK 型は、このコールバック関数へのポインターを定義します。EditStreamCallback は、アプリケーション定義の関数名を表すプレースホルダーです。
戻り値
型: DWORD
コールバック関数は、成功を示す場合に 0 を返します。
コールバック関数は、エラーを示す場合に 0 以外の値を返します。エラーが発生した場合、読み取りまたは書き込みの操作は終了し、リッチエディットコントロールは pbBuff バッファー内のデータを破棄します。コールバック関数が 0 以外の値を返した場合、リッチエディットコントロールは EDITSTREAM 構造体の dwError メンバーを使用して、その値をアプリケーションに返します。
解説(Remarks)
リッチエディットコントロールに EM_STREAMIN メッセージまたは EM_STREAMOUT メッセージを送信するとき、EDITSTREAM 構造体の pfnCallback メンバーで EditStreamCallback 関数へのポインターを指定します。リッチエディットコントロールはこの関数を繰り返し呼び出して、コントロールへ、またはコントロールからデータのストリームを転送します。
EM_STREAMIN メッセージまたは EM_STREAMOUT メッセージを送信するときには、EDITSTREAM 構造体の dwCookie メンバーの値を指定します。リッチエディットコントロールは、dwCookie パラメーターを使用して、この値をアプリケーションの EditStreamCallback 関数に渡します。たとえば、dwCookie を使用して、開いているファイルのハンドルを渡すことができます。コールバック関数は、その dwCookie ハンドルを使用して、ファイルの読み取りや書き込みを行えます。
コントロールはコールバック関数を繰り返し呼び出し、呼び出しごとにデータの一部を転送します。コントロールは、次のいずれかの条件が発生するまでコールバック関数の呼び出しを続けます。
- コールバック関数が 0 以外の値を返した。
- コールバック関数が *pcb パラメーターに 0 を返した。
- リッチエディットコントロールへの、またはリッチエディットコントロールからのデータ転送を妨げるエラーが発生した。たとえば、メモリ不足、システム関数の失敗、読み取りバッファー内の無効な文字などです。
- ストリームイン操作で、RTF コードに RTF ブロックの終了を示すデータが含まれていた。
- 単一行のエディットコントロールへのストリームイン操作で、コールバックが段落終了文字 (CR、LF、VT、LS、PS) を読み取った。
Microsoft 公式リファレンス: 英語 (en-us) · 日本語 (ja-jp) · 原文ソース (GitHub)