株式会社エス・スリー・フォー

6.3 Windows クリップボードと DDE Streambuf

前の節では、仮想ストリーム機能が、ストリームに挿入された項目の形式をどのように抽象化するかについて説明しました。ストリームに挿入された項目の状態も抽象化されました。これは使用した streambuf の型によって設定されます。

streambuf クラスは、iostream 機能の基礎となるシーケンス層です。これは、文字の順序の生成と利用を行います。コンパイラに付属のものには、いくつかの種類の streambuf があります。例えば、filebuf クラスは最終的に文字をファイルに入力および出力します。strstreambuf クラスは、メモリベースの文字ストリームで入力および出力をします。つまり、ANSI-C の sprintf() 関数と同等の iostream と考えることができます。今回、Tools.h++ には次の Windows ベースの拡張機能が付け加えられました。

  • Windows クリップボードでの入力および出力を行うための RWCLIPstreambuf クラス
  • Windows の DDE (動的データ交換) 機能を経由して入力および出力を行うためのRWDDEstreambuf クラス

これらのクラスは、バッファがオーバーフローまたはアンダーフローすると、Windows からのメモリの割り当てと解放を行います。RWDDEstreambuf クラスの場合は、関連する DDEDATA ヘッダも自動的に書き込まれます。Rogue Wave の仮想ストリームクラスと同様に、istreamostream を含め、ios クラスを継承したすべてのクラスはこれらの streambuf と共に使用できます。

例えば、複雑な構造を一般のディスクベースのファイルに格納するためのコードは、DDE 機能でその構造を別のアプリケーションに転送するためにも使用できるということです。