Здравствуйте, Андрей, Вы писали:
А>Так ты сам пишешь:
А> dc.SetBkMode(TRANSPARENT);
А>попробуй написать:
А> dc.SetBkMode(OPAQUE);
Это относится лишь к тому, заливать фоновым цветом прямоугольник, в который выводится текст, или не заливать.
Рисование в "слоистом" окне автоматически будет учитывать альфа-канал — поэтому в том виде, как сделано сейчас, задача неразрешима.
Выход может быть в том, чтобы создать два окна, одно над другим. Нижнее окно полупрозрачное (WS_EX_LAYERED и т.д.), верхнее — прозрачное (WS_EX_TRANSPARENT) и рисует только текст — но уже без альфа-канала. Важно отключить в верхнем окне заливку фона (обработка WM_ERASEBKGND).
И разумеется, эти окна должны быть не родитель-ребёнок, а два независимых ребёнка, скажем, одного чисто прозрачного родитеhf — т.к. альфа-канал родителя распространяется на ребёнка.
Ещё один выход (довольно злодейский) состоит в прямом рисовании на экранный контекст.
Злодейский — потому, что не учитывает отсечки (и текст нарисуется поверх всех других окон). Впрочем, регион отсечки можно как-то выцарапать из контекста рисования...