Есть ли лучший способ подчеркнуть первое слово в элементе управления CStatic?

У меня есть двумерный массив символов lineData и массив bools, linesToUnderline, lineData хранит только текст. linesToUnderline хранит истину или ложь для каждой строки в lineData, Каждая строка в lineData вводится в статический элемент управления (который создается динамически) определенным образом для отображения пользователю.

Сейчас если linesToUnderline[i] = верно (для 0 <= я < numLines), Мне нужно отобразить строку только с первое слово подчеркнуто а остальная часть текста нормально.

То, о чем я говорю, выглядит так:

Первое слово подчеркнуто

Итак, на данный момент, что я думаю сделать:

  1. Если linesToUnderline[i] = ложь, перейдите к шагу 4.
  2. Получить первое слово от lineData, поместите его в статический элемент управления, установите шрифт этого элемента управления в подчеркнутый.
  3. Удалить первое слово из lineData,
  4. Увеличить начальную позицию X на lineDataдлина пикселя.
  5. Положил lineData в статическом управлении, начиная с позиции X, Y.
  6. Если i < numLines перейдите к шагу 1.
  7. Стоп.

Что вы думаете о моем методе? Я чувствую, что должен быть лучший способ сделать это. Если есть, кто-нибудь может мне помочь?

2

Решение

Ваш предложенный метод не будет работать. Элемент управления использует только один шрифт за раз (для всего своего текста), и он не обеспечивает способ добавления текста в X, Y.

Вы должны создать подкласс управления и нарисовать текст самостоятельно в WM_PAINT. Ваш код краски может предоставить необходимые функции.

0

Другие решения

это код проекта статьи реализует элемент управления гиперссылкой путем подкласса статического элемента управления. Вы можете использовать его в качестве основы для подчеркивания. Все, что вам нужно сделать, это упростить код.

0

По вопросам рекламы [email protected]