проблема с ClearType
, ???
![]() |
Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
|
| ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
| [216.73.216.142] |
|
|
Правила раздела Visual C++ / MFC / WTL (далее Раздела)
FAQ Раздела
Обновления для FAQ Раздела
Поиск по Разделу
MSDN Library Online
проблема с ClearType
, ???
|
Сообщ.
#1
,
|
|
|
|
VC++ 7.0, WinAPI
решил в статусбаре окна отображать состояние wordwrap ричедита буквами WW соответственно серго или черного цвета (неактивный-активный). написал вот такую функцию, вызываемую из WM_PAINT statusbar ![]() ![]() void classStatusbar::UpdateWordwrapField(BOOL state) // { // это нужно для очистки этого поля if (state == -1) { ::SendMessage(_hWnd, SB_SETTEXT, (WPARAM)6,(LPARAM)_T("")); return; } RECT rc = {0}; HFONT hfont = (HFONT)::SendMessage(_hWnd, WM_GETFONT, 0, 0 ); HDC hdc = GetDC(_hWnd); ::SendMessage(_hWnd, SB_GETRECT, (WPARAM)6, (LPARAM) &rc); rc.left += 2; ::SetBkMode(hdc, TRANSPARENT); ::SelectObject(hdc, (HGDIOBJ)hfont); if (state==0) { ::SetTextColor(hdc, ::GetSysColor(COLOR_GRAYTEXT)); } ::DrawText(hdc, _T("WW"), -1, &rc, DT_VCENTER | DT_SINGLELINE | DT_VCENTER); //::SendMessage(_hWnd, SB_SETTEXT, (WPARAM)6,(LPARAM)(LPTSTR)_T("WW") ); ::ReleaseDC(_hWnd, hdc); } всё вроде ОК, но вот если на машине включен ClearType - то WW выводится жирно-черным (видимо сглаженным), отличаясь от остального текста статусбара. Как бы это побороть? Или дайте другой пример как мне делать серый-черный текст в статусе, прикладываю скриншот проблемы: Прикреплённая картинка
|
|
Сообщ.
#2
,
|
|
|
|
Не уверен, что из-за этого, но тут возможна утечка GDI ресурсов. Надо запоминать фонт из DC (который вернула SelectObject) и потом его восстанавливать перед ReleaseDC. Вообще, строго говоря, все измененные установки DC надо возвращать в исходное состояние после всех рисований.
|
|
Сообщ.
#3
,
|
|
|
|
Uncle_Bob
делал так (запоминал всё, восстанавливал) - не влияет Добавлено а утечка откуда? я же ничего не создаю, только имеющимися хэндлами пользуюсь. Хотя ты, конечно, прав, сделаю снова более корректно. |
|
Сообщ.
#4
,
|
|
|
|
Цитата vito333 @ а утечка откуда? я же ничего не создаю, только имеющимися хэндлами пользуюсь. Я не утверждаю, я говорил "возможна". Может утекать предыдущий объект HFONT, который теряется когда ты делаешь SelectObject. На самом деле нет идей почему он рисуется болдом. |