eine Frage für echte Experten: Wie wird es gemacht, dass eine Einfügen-Operation auf OLE-Ziel die OLE-Quelle beginnt, Daten zu liefern?MFC: Windows Explorer-ähnliche Anwendung zum parallelen Exportieren von Dateien mit dem Hauptthread
Ich erstelle eine MFC-basierte Windows-Explorer-ähnliche app/Schnitt zum Kopieren/Einfügen virtuelle Dateien von/nach irgendwo (Drag & Drop und OLE-Zwischenablage). Das Problem, mit dem ich mich jetzt beschäftige, ist, wie man den Export von Dateien mit dem Hauptfenster-Thread parallel macht. Wie gesagt, es ist eine MFC App, also exportiere ich den virtuellen Dateiinhalt in die COleDataSource::OnRenderFileData
Funktion. Diese Funktion wird nirgendwo in der Anwendung explizit aufgerufen, wird aber vom Hauptfenster-Thread aufgerufen. Ich habe hineingegraben und festgestellt, dass MFC einen bestimmten Befehl (CN_COMMAND
) verarbeitet, der von der OnCmdMsg
-Funktion des Dokuments verarbeitet wird - das erklärt, wie der Hauptthread OnRenderFileData
aufruft.
Aber wie ich an VS2010 Express Edition mit Legacy (aber frei) MFC4.2 arbeite, kann ich nicht den Punkt, wo einige magische Nachricht empfangen (von COM?) Und verarbeitet von der MFC-Haupt-Thread . Ich möchte diesen Punkt überschreiben, um die virtuellen Dateien parallel zum Hauptthread der Anwendung zu exportieren.
Vielen Dank für alle Vorschläge
Tomas
Wenn Sie Drag/Drop und OLE Zwischenablage verwenden, dann kommt es wahrscheinlich über 'IDataObject :: GetData'. –