真のエキスパートのための質問:OLEターゲットのペースト操作によってOLEソースがデータの供給を開始するのはどうですか?MFC:メインのスレッドと並行してファイルをエクスポートするWindowsエクスプローラのようなアプリケーション
私はドラッグ&ドロップ(OLEのクリップボード&を使って)どこからでも仮想ファイルをコピー/カット/ペーストするためのMFCベースのWindowsエクスプローラのようなアプリケーションを作成しています。私が今苦労している問題は、メインウィンドウのスレッドと並行してファイルをエクスポートする方法です。私は、COleDataSource::OnRenderFileData
関数内の仮想ファイルの内容をエクスポートするようにMFCのアプリだと言った。この関数は明示的に呼び出されたアプリケーションのどこにもありませんが、メインウィンドウスレッドによって呼び出されます。私はそれを掘り起こし、MFCがドキュメントのOnCmdMsg
関数によって処理される特定のコマンド(CN_COMMAND
)を処理することを発見しました。これは、メインスレッドがOnRenderFileData
を呼び出す方法を説明しています。
しかし、私はVS2010 Express Editionをレガシー(ただし無料)MFC4.2で作業しているため、COMからの魔法のメッセージが受信され、MFCメインスレッドによって処理されるポイントを追跡できません。仮想ファイルをアプリケーションのメインスレッドと並行してエクスポートするために、このような点をオーバーライドしたいと思います。あなたが話している「魔法」のメッセージが遅延レンダリングを要求し、クリップボードの所有者に送信されWM_RENDERFORMAT
、ある
トーマス
ドラッグ&ドロップとOLEクリップボードを使用している場合は、おそらく 'IDataObject :: GetData'を介して入ってきます。 –