問題が発生しました:グローバルデータをキャッシュするアプリケーション を閉じると、OLEクリップボードがクリアされます。使用のMFC/COM:アプリケーションが終了するとクリップボードが消去されるのを防ぐ
class CMyOleDataSource sealed:public COleDataSource{
public:
CMyOleDataSource(){
// ctor
// - target may inform if paste succeeded
DelaySetData(CEditor::cfPasteSucceeded); // global const value
// - cache a plain ANSI text
char text[]="hello world";
const HANDLE hText=::GlobalAlloc(GMEM_SHARE,::lstrlen(text)+1); // "+1" = null-char
::lstrcpy((LPSTR)::GlobalLock(hText), text);
::GlobalUnlock(hText);
CacheGlobalData(CF_TEXT, hText);
}
};
...
COleDataSource *ods=new CMyOleDataSource; // instantiation somewhere in the app
2つのシナリオ:
は、ここで私がやっているものだ(1)アプリのキャッシュの "Hello World"、私はメモ帳に貼り付けて、アプリを閉じ
- テキストはクリップボードにキャッシュされたままです。(2)アプリケーションは「hello world」をキャッシュし、どこにでも貼り付けることなくアプリを閉じる - テキストはクリップボードから破棄されます。
したがって質問 - 私は間違っていますか? COleDataSource
オブジェクトに何かを設定する必要はありますか?
ご協力いただきありがとうございます。
ありがとう、私は間違った方法でOLEクリップボードの周りに物事をインスタンス化していると思った:-) – tomascz