C ++: рисовать растровые изображения в нескольких экземплярах с помощью Firebreath - PullRequest
4 голосов
/ 19 января 2012

Я борюсь с этим,

Я хочу нарисовать растровое изображение в PluginWindowWin (Firebreath), используя GDI +;для этого у меня есть таймер, имитирующий сообщение wm_paint, и этот код внутри:

using namespace Gdiplus;
Graphics graphics(hwnd);
graphics.DrawImage(image, 0, 0, 400, 400);

image - это Gdiplus :: Image, все работает нормально, НО, если я создам 2 экземпляра плагина (два разных HWND), он ТОЛЬКО привлечет один из них.

Это ожидаемое поведение? Я имею в виду, GDI + будет рисоватьтолько в одном контексте, созданном из HWND?

Спасибо!

1 Ответ

1 голос
/ 31 января 2012

По сути, каждое окно (верхнего уровня) должно иметь свой собственный поток. Если вы поместите любое окно в свой собственный поток, вы сможете рисовать параллельно, отправив сообщение обоим окнам / потокам, имеющим собственный диспетчер сообщений.

Редактирование: многопоточность с общими GDI-объектами - рискованная задача. Управление ресурсами должно быть поточно-ориентированным.

...