Я пытаюсь создать пользовательский элемент управления, отображающий растровое изображение с разрешением каждого пикселя (как некоторые из вас уже знают по другим вопросам).
Сейчас я использую пользовательский элемент управления в редакторе ресурсов и присоединяю его к классу, производному от CWnd. Когда я регистрирую свой пользовательский класс, я устанавливаю hbrBackground структуры WNDCLASS в NULL_BRUSH для достижения прозрачности элемента управления.
В OnPaint элемента управления я использую AlphaBlend для рисования растрового изображения альфа-смешивания на пиксель.
Это работает довольно хорошо, но у меня есть две проблемы:
Я хочу изменить отображаемое растровое изображение, когда мышь находится над элементом управления. Поскольку элемент управления прозрачен, области, в которых одно растровое изображение не перекрывается другим растровым изображением, не стираются. Как я могу стереть фон при смене изображения?
Вторая проблема связана с двумя перекрывающимися элементами управления. Мой элемент управления закрашен другим элементом управления, который имеет градиент (фактически находится внутри другого элемента управления). Проблема заключается в том, что если я поместил свой элемент управления ранее в z-порядке, другие элементы управления перекрывают мой элемент управления, а мой не отображается. Если я поместил другой элемент управления в z-порядке, я не смогу получить сообщение мыши в моем элементе управления.
Возможно, я делаю что-то не так или я ошибаюсь в том, как я пытаюсь реализовать свой контроль. Буду признателен за любую помощь.
Спасибо
Хавьер