Здравствуйте kl, Вы писали:
kl>Здравствуйте Андрей, Вы писали:
А>>Здравствуйте kl, Вы писали:
kl>>>Насчет регистрирования то все прозрачно... kl>>>Кстати, а зачем COleDataSource, чем SetClipboardData хуже? И то и то принимает HGLOBAL, а никакие drag & drop мне не нужны. А>>COleDataSource нужен, чтобы использовать IStream — его же можно будет в Clipboard потом запихать и HGLOBAL тебе нафиг не нужен будет, а drag&drop здесь ни при чем.
kl>>>А вот про CMemFile я и забыл, но ты уверен что он нормально себя чуствует с блоком, выделенным GlobalAlloc? А>>Очень даже нормально, если правильно использовать. А лучше даже CSharedFile использовать — создаешь его, пишешь как в обычный файл, затем делаешь Detach — и получаешь готовый HGLOBAL, то есть GlobalAlloc тебе явно использовать не надо.
kl>>>Спасибо за ответ! А>>Всегда пожалуйста.
kl>Насчет CSharedFile ясно, но чего то я не догоняю насчет того, что "HGLOBAL нафиг не нужен". kl>Stream то я создаю через CreateStreamOnHGlobal (может не так надо??) , поэтому хэндл все равно у меня есть. Поэтому вместо COleDataObject::Attach, COleDataSource::SetClipboard, я использую SetClipboardData. Мне кажется так эффективнее, может я чего то не понимаю?
Я могу ошибаться, но по-моему, CreateStreamOnHGlobal нужна, чтобы получить IStream, который можно передать в Clipboard, а не наоборот.
IStream в Clipboard ты с помощью Win32API не передашь. Хотя, может быть и будет работать с HGLOBAL — я не проверял. Но как-то это все вычурно получается, проще через CSharedFile.