У меня возникла проблема: Буфер обмена 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
Два сценария использования:
(1) Кроме того, приложение кэширует «привет мир», я вставить его в блокнот, и закрыть приложение - текст остается в кеше в буфере обмена.
(2) Приложение кэширует «мир привет», и я закрываю приложение, не вставляя его нигде - текст отбрасывается из буфера обмена.
Поэтому вопрос - что я делаю неправильно? Нужно ли еще что-нибудь установить в объекте COleDataSource
?
Заранее благодарим за любую помощь.
Спасибо, я думал, что создаю вещи вокруг буфера обмена OLE неправильно :-) – tomascz