これらのクリップボード形式を使用して、データを直接アプリケーションからWindowsエクスプローラにファイルとして貼り付けることができました。アプリケーションが終了したときにクリップボードにCFSTR_FILECONTENTS/CFSTR_FILEDESCRIPTORの項目を残す
私の実装では、MFCクラスのCOleDataSourceが使用されていますが、これはIDataObjectの周りのラッパーとOleSetClipboardのようなAPIです。
IDataObjectのローカル実装(つまり、COleDataSourceから派生したクラス)が終了すると、COleDataSource :: FlushClipboardが呼び出されます。これにより、現在のすべてのデータのコピーをクリップボードに保存する必要があります(遅延レンダリングされたコンテンツであっても)。そのため、アプリが終了した後に利用できるようになります。
これはCF_TEXTなどの単純な形式でも機能しますが、CFSTR_FILECONTENTS形式は機能しなくなりました。 Windows Explorerには[貼り付け]メニュー項目がありますが、標準のMessageBeepサウンドが貼り付けられても何も起こりません。
これを動作させることは可能ですか、元のIDataObject実装がまだ有効であるかどうかに応じてCFSTR_FILECONTENTSですか?
データオブジェクトの情報をどのように設定していますか。あなたはCFSTR_FILECONTENTSのレンダリングを遅らせますか? – snowdude