Как установить текст в статической метке для полужирного стиля? - PullRequest
1 голос
/ 20 августа 2010

Я пишу приложение для устройства Pocket PC 2003. В нем есть диалог, где отображается различная текстовая информация. Информация разделена так, что каждый фрагмент находится внутри своей собственной метки, определенной как LTEXT в файле ресурсов.

Теперь моя проблема в том, что на данный момент все текстовые метки имеют один и тот же шрифт и стиль (обычный или простой, то есть не жирный или курсив); Я хочу, чтобы он был выделен жирным шрифтом. Я знаю, что могу установить шрифт полужирным в файле ресурсов, но при этом устанавливается стиль всех меток.

Как этого добиться? Я видел его на экране «О программе» в Windows, поэтому я знаю, что это возможно. Я написал программу на C ++ с использованием Win32 API напрямую (за исключением некоторых диалогов, в которых я использовал файл ресурсов), поэтому я был бы признателен, если бы ответ был дан на том же языке и подходе.

Спасибо.

1 Ответ

0 голосов
/ 20 августа 2010

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

В DialogProc для диалоговых окон, в которых размещается элемент управления, добавьте обработчик WM_CTLCOLORSTATIC:

case WM_CTLCOLORSTATIC:
  HDC hdc;
  HWND hwndCtl;
  hwndCtl = (HWND) lParam;
  hdc = (HDC) wParam;

  if( GetWindowLong(hwndClt, GWL_ID ) == IDC_BOLD )
  {
    SetBkMode(hdc,TRANSPARENT);
    SetTextColor(hdc,RGB(0xff,0,0)); // turn the text red for fun :)
    SelectObject(hdc,hBoldFont);     // but you want this...
    return (INT_PTR)GetSysColorBrush(COLOR_BTNFACE); 
    //return 0L; // if visual themes are enabled (common controls 6) then 0 is better.
  }
  // default processing
  return 0;

Вы разрабатываете для Pocket PC 2003, я не знаю, какие стили кнопок доступны. Эта страница относится, конечно, к настольной XP. Но если кнопки в диалоговых окнах не являются плоскими серыми кнопками 95esq, то было бы более целесообразно вернуть 0, поскольку это правильно закрасит текстовый фон, если фон диалогов не является простым серым.

Предвизуальный стиль возвращает 0, заставляет систему сбрасывать DC, поэтому важно знать, какой возврат подходит.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...