Привет всем.
Подскажите пожалуйста (или лучше примерчик подкиньте), как можно прочесть из буфера информацию таких форматов, как CF_BITMAP, CF_ENHMETAFILE, CF_METAFILEPICT, CF_PALETTE и некоторых других, сохранить в файл, затем считать из файла и поместить обратно в буфер так, чтобы вернуть все в буфер без потерь?
Просто с текстовыми форматами у меня получается, а с некоторыми другими — нет.
Хотелось бы иметь универсальную функцию для любого формата. Или хотя бы объясните, с какими форматами как нужно работать.
Спасибо.
Здравствуйте Караваха, Вы писали:
К>Привет всем.
К>Подскажите пожалуйста (или лучше примерчик подкиньте), как можно прочесть из буфера информацию таких форматов, как CF_BITMAP, CF_ENHMETAFILE, CF_METAFILEPICT,
А в чем собст. проблема? Может у тебя затык в том, что
GetClipboardData возвращает не хендл области памяти (мдя, некорректно выразился), а хендл битмапа, метафайла и т.д. Т.е. никаких GlobalLock делать не нужно.
Eg.
BOOL res = OpenClipboard();
if(res) {
CBitmabitmap = reinterpret_cast<HBITMAP>(GetClipboardData(CF_BITMAP));
CDC mem_dc;
mem_dc.CreateCompatibleDC(&dc);
CBitmap* old_bmp = mem_dc.SelectObject(CBitmap::FromHandle(bitmap));
dc.BitBlt(50, 50, rc_client.Width(), rc_client.Height(), &mem_dc, 0, 0, SRCCOPY);
mem_dc.SelectObject(old_bmp);
CloseClipboard();
}
CF_PALETTE и некоторых других, сохранить в файл, затем считать из файла и поместить обратно в буфер так, чтобы вернуть все в буфер без потерь?
Не совсем понял. Ежели без потерь, то накохер такие танцы, ежели можно просто не удалять данные из буфера?
К>Просто с текстовыми форматами у меня получается, а с некоторыми другими — нет.
К>Хотелось бы иметь универсальную функцию для любого формата. Или хотя бы объясните, с какими форматами как нужно работать.
Смотри TFM по поводу
Standard Clipboard Formats