Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Низкоуровневое программирование > Win Api
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 08.05.2018, 17:51   #1
My_Number245
Пользователь
 
Регистрация: 07.06.2016
Сообщений: 19
По умолчанию Копирование bmp-картинки в буфер обмена

Здравствуйте, такая проблема. Есть у меня HBITMAP прочитанной картинки (допустим, из файла прочитал). Нужно скопировать картинку в буфер, используя Си (не C++), без использования сторонних библиотек. Загвоздка в том, что только начинаю учить WinAPI, перекопал кучу сайтов, но понятных примеров не нашел. Копировать текст в буфер научился, а с картинками проблема. Хотелось бы пример с комментариями, как оно работает, или ссылок на литературу (где будет описано на си, а не на плюсах). Помогите разобраться

Последний раз редактировалось My_Number245; 08.05.2018 в 17:58.
My_Number245 вне форума Ответить с цитированием
Старый 08.05.2018, 18:14   #2
waleri
Старожил
 
Регистрация: 13.07.2012
Сообщений: 6,493
По умолчанию

Ну так покажите как копируете текст, я вам скажу как исправить для HBITMAP
waleri вне форума Ответить с цитированием
Старый 08.05.2018, 18:36   #3
My_Number245
Пользователь
 
Регистрация: 07.06.2016
Сообщений: 19
По умолчанию

Код:
				switch(cmd)
				{
					case MY_COPY:
						char *dest;
						HGLOBAL hgl;
						hgl = GlobalAlloc(GHND, BUFSIZE);
						GetDlgItemText(hw, MY_TEXT, buf, BUFSIZE-1);
						dest = (char *)GlobalLock(hgl);
						strcpy(dest, buf);
						OpenClipboard(NULL);
						EmptyClipboard();
						SetClipboardData(CF_TEXT, hgl);
						CloseClipboard();
						GlobalUnlock(NULL);
						return TRUE;
                                   }
Я копирую из поля Edit, BUFSIZE = 1024, cmd - код команды

Последний раз редактировалось My_Number245; 08.05.2018 в 18:43. Причина: 2 раза отправилось, извиняюсь за спам
My_Number245 вне форума Ответить с цитированием
Старый 08.05.2018, 18:39   #4
My_Number245
Пользователь
 
Регистрация: 07.06.2016
Сообщений: 19
По умолчанию

Цитата:
Сообщение от waleri Посмотреть сообщение
Ну так покажите как копируете текст, я вам скажу как исправить для HBITMAP
Код:
				switch(cmd)
				{
					case MY_COPY:
						char *dest;
						HGLOBAL hgl;
						hgl = GlobalAlloc(GHND, BUFSIZE);
						GetDlgItemText(hw, MY_TEXT, buf, BUFSIZE-1);
						dest = (char *)GlobalLock(hgl);
						strcpy(dest, buf);
						OpenClipboard(NULL);
						EmptyClipboard();
						SetClipboardData(CF_TEXT, hgl);
						CloseClipboard();
						GlobalUnlock(NULL);
						return TRUE;
                                   }
Я копирую из поля Edit, BUFSIZE = 1024, cmd - код команды
My_Number245 вне форума Ответить с цитированием
Старый 08.05.2018, 20:11   #5
waleri
Старожил
 
Регистрация: 13.07.2012
Сообщений: 6,493
По умолчанию

Замените
Код:
SetClipboardData(CF_TEXT, hgl);
на
Код:
SetClipboardData(CF_BITMAP, hBitmap);
Цитата:
Сообщение от My_Number245 Посмотреть сообщение
GlobalUnlock(NULL);
Это лишнее - надо unlock тому, что до этого lock.
waleri вне форума Ответить с цитированием
Старый 08.05.2018, 20:23   #6
My_Number245
Пользователь
 
Регистрация: 07.06.2016
Сообщений: 19
По умолчанию

Цитата:
Сообщение от waleri Посмотреть сообщение
Замените
Код:
SetClipboardData(CF_TEXT, hgl);
на
Код:
SetClipboardData(CF_BITMAP, hBitmap);

Это лишнее - надо unlock тому, что до этого lock.
Спасибо большое, все заработало)
My_Number245 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Копирование из listview в буфер обмена bender42 Общие вопросы Delphi 1 21.06.2012 23:37
Копирование в буфер обмена Abuhamed JavaScript, Ajax 2 05.02.2012 02:20
Копирование в буфер обмена motorway JavaScript, Ajax 1 10.04.2011 07:36
Копирование в буфер обмена Xanex Общие вопросы Delphi 5 18.05.2009 23:13
Копирование структуры в буфер обмена bill Общие вопросы Delphi 14 20.11.2007 17:22