LPDRAWITEMSTRUCT pdis=(LPDRAWITEMSTRUCT)lparam;
switch (pdis->itemAction)
{
case ODA_DRAWENTIRE:
{
SelectObject(hMemDC,hbm3);break;
}
case ODA_FOCUS:
if(pdis->itemState & ODS_DEFAULT)
{
SelectObject(hMemDC,hbm2);break;
}
Visual Styles + ownerdraw
Имеются кнопки с ownerdraw. Ну и прогресс бар имеется обычный. Захотелось мне красоты, чтобы он по-виндовому отрисовывался(зеленый, в новом стиле, без голубых прямоугольников), включил стили. Теперь беда с ними другая: не приходит сообщение WM_DRAWITEM с параметрами прорисовки для нажатых кнопок. Т.е. LPDRAWITEMSTRUCT(lparam)==ODA_SELECT. Остальные (ODA_FOCUS и ODA_DRAWENTIRE) приходят нормально.
ODA_* - битовые флаги. Их присутствие нельзя устанавливать как LPDRAWITEMSTRUCT(lparam)==ODA_SELECT
Цитата: Phodopus
ODA_* - битовые флаги. Их присутствие нельзя устанавливать как LPDRAWITEMSTRUCT(lparam)==ODA_SELECT
Интересно, как же работает тогда все у меня?
Код:
И так далее.
Цитата: motorw
Интересно, как же работает тогда все у меня?
если там 7 case-ов, то не вопрос (приведено было именно как
Цитата:
LPDRAWITEMSTRUCT(lparam)==ODA_SELECT
).
Да и проблема может быть не в этом. Но тем не менее сравнивать надо так, как это сделано в этом месте:
Код:
if(pdis->itemState & ODS_DEFAULT)
Так он вообще ODA_SELECT не получает! месседжбоксами проверял даже. Вот в чем проблема. Фокус он принимает нормально.
Выложите пример проектом в аттаче