Я пытаюсь создать пользовательский элемент управления CStatic
в vc++
и у меня возникли некоторые проблемы.
Изначально я использовал элемент управления CStatic
со стилем SS_BLACKRECT
. Это было хорошо для ситуации, пока мне не понадобилось отображать изображение поверх элемента управления по требованию.
Я выяснил всю логистику, лежащую в основе фактического рисования изображения на элементе управления, но я не могу понять, как это сделать, не мешая другим вещам.
По сути, я хочу, чтобы элемент управления функционировал как обычный CStatic
в стиле SS_BLACKRECT
большую часть времени.
Тогда мне нужно иметь возможность вызывать метод, который заставит его рисовать изображение поверх элемента управления. Я делаю рисунок, используя GDI
, и попробовал его как в методе OnPaint()
, так и в методе DrawItem()
, но безуспешно. Я могу заставить его рисовать в OnPaint()
, но когда я называю базу CStatic::OnPaint()
, она рисует поверх моего изображения.
Мне нужно, чтобы он рисовался как обычно, но затем просто добавляю изображение сверху. Когда я попытался сделать это в методе DrawItem()
, у меня возникла проблема, потому что, очевидно, он рисовал не в стиле SS_BLACKRECT
, а ожидал, чтобы я нарисовал элемент управления, как предполагалось.
Полагаю, то, что я ищу, - это одна из трех вещей. Способ рисования с использованием GDI
после завершения базового метода OnPaint()
. Способ заставить элемент управления нарисовать стиль по умолчанию SS_BLACKRECT
, а затем OWNERDRAW
изображение впоследствии. Или код для имитации рисунка SS_BLACKRECT
.
Последний может быть самым простым, но я просто не знаю всех вещей, которые мне нужно настроить, чтобы нарисовать CStatic
элемент управления, такой как DrawItem по умолчанию.