Здравствуйте, 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
}