Ситуация такая. Есть окно. В его классе зарегистрирована некоторая кисть.
Есть битмап. Его надо залить этой кистью.
Делаю, естественно, GetClassLong (GCL_HBRBACKGROUND). А дальше вот такой вопрос. Там вполне может быть не HBRUSH, а номер типа COLOR_*. Если да — надо брать от него GetSysColorBrush. Если нет — и так сойдет.
Вопрос — как правильно эти 2 ситуации отличить ? Сравнивать с
#define COLOR_GRADIENTINACTIVECAPTION 28 (это вроде максимальное значение)
не очень корректно, могут быть изменения в дальнейшем.
Здравствуйте, Pavel Dvorkin, Вы писали:
PD>Ситуация такая. Есть окно. В его классе зарегистрирована некоторая кисть. PD>Есть битмап. Его надо залить этой кистью.
PD>Делаю, естественно, GetClassLong (GCL_HBRBACKGROUND). А дальше вот такой вопрос. Там вполне может быть не HBRUSH, а номер типа COLOR_*. Если да — надо брать от него GetSysColorBrush. Если нет — и так сойдет. PD>Вопрос — как правильно эти 2 ситуации отличить ? Сравнивать с
PD>#define COLOR_GRADIENTINACTIVECAPTION 28 (это вроде максимальное значение)
PD>не очень корректно, могут быть изменения в дальнейшем.
PD>В общем — как отличить HBRUSH от индекса цвета ?
бредовая идея, но может.
HBRUSH hBrush = GetClassLong (GCL_HBRBACKGROUND);
LOGBRUSH logBrush;
if (!GetObject(hBrush, sizeof(logBrush), &logBrush))
{
// считай, что у тебя color
}
else
{
// у тебя handle
}
Здравствуйте, Pavel Dvorkin, Вы писали:
PD>Ситуация такая. Есть окно. В его классе зарегистрирована некоторая кисть. PD>Есть битмап. Его надо залить этой кистью.
PD>Делаю, естественно, GetClassLong (GCL_HBRBACKGROUND). А дальше вот такой вопрос. Там вполне может быть не HBRUSH, а номер типа COLOR_*. Если да — надо брать от него GetSysColorBrush. Если нет — и так сойдет. PD>Вопрос — как правильно эти 2 ситуации отличить ? Сравнивать с
PD>#define COLOR_GRADIENTINACTIVECAPTION 28 (это вроде максимальное значение)
PD>не очень корректно, могут быть изменения в дальнейшем.
PD>В общем — как отличить HBRUSH от индекса цвета ?
Если заливать будешь FillRect'ом, можешь последним параметром вместо кисти указать COLOR_* + 1. Соответственно, и различать ничего не надо.
Здравствуйте, last_hardcoder, Вы писали:
_>Если заливать будешь FillRect'ом, можешь последним параметром вместо кисти указать COLOR_* + 1. Соответственно, и различать ничего не надо.
Спасибо. Заливал PatBlt, но сменить на FillRect ничего не стоит. Изящный выход из положения