Как изменить цвет текста на кнопке? Стандартной. - VB

Узнай цену своей работы

Формулировка задачи:

Проблема в чем:
Сделал как здесь:
Как облагородить кнопку которая поверх картинки?
Наложил кнопку поверх картинки.
Ну научился картинки на кнопке рисовать:

Обошел даже глюк на XP теме (кнопка превращается в классику при попытке сделать Or BS_ICON):

Дальше сделал кнопки прозрачными(работает только на 7-ке, воруется стиль 7-рочной кнопки "Свернуть все окна")

Выглядит здорово, но шрифт текста черный - хотелось бы белый или поиграться. (На фоне темной картинки буков почти не видно).
==================
Что пробовал:
1) Вклиниться в процедуру которой подрисовываю background

т.е. пытался воткнуть туда
SetTextColor wParam, RGB(X, Y, Z)
-не получилось
2) Пытался опять же из CUSTOMDRAW

Но это увы не listview, где можно строчки раскрасить
3) Пытался там же рисовать этот текст на hdc

Не рисует текст вообще.
Все примеры VB6 что находил используют стиль кнопки Graphical -это порнушка.
В "Калькулятор" цвет надписей как-то изменен. Судя по тому, что цифры на классике не прыгают при нажатии (на классике должны), рисуется на hdc.
Могу конечно вставить иконки с текстом Or BS_ICON либо рисовкой на hdc кнопки, но это накладно и цвет оперативно менять нельзя (не для всех же цветов/кнопок надписи на иконках делать).

Решение задачи: «Как изменить цвет текста на кнопке? Стандартной.»

textual
Листинг программы
Private Declare Function TextOut Lib "gdi32.dll" Alias "TextOutA" _
  (ByVal hdc As Long, ByVal x As Long, ByVal y As Long, _
  ByVal lpString As String, ByVal nCount As Long) As Long


    Case WM_NOTIFY
      Static lvcd As NMLVCUSTOMDRAW
      MoveMemory lvcd, ByVal lParam, Len(lvcd)   ' every structs' member is a Long
      Select Case lvcd.nmcd.hdr.code
        Case NM_CUSTOMDRAW
...
              CDDS_PREPAINT

                      Dim sPrintText As String
                      sPrintText = "Print this text"
                      SetBkMode wParam, TRANSPARENT
                      SetTextColor lvcd.nmcd.hdc, vbBlue
                      TextOut lvcd.nmcd.hdc, 0, 0, sPrintText, Len(sPrintText)

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

7   голосов , оценка 4.571 из 5
Похожие ответы