Здравствуйте, ksi, Вы писали:
ksi>br.CreateSolidBrush(PALETTERGB(r,g,b));
ksi>получается цвет разбитый на 16 стандартных цветов, а не чистый цвет из палитры.
Ааа, в этом смысле...
PALETTERGB явно лажает. Это и не удивительно, учитывая что он работает безотносительно к какому-либо DC.
Если Вы и так знаете индекс в палитре, то используйте PALETTEINDEX() — этот макрос переводит WORD-индекс в формат COLORREF.
Если не знаете, то "обычный" RGB() должен помочь — при
выборе этой кисти цвет сам будет определяться как ближайший из возможных. Причем не обязательно из системной палитры, а изо всей доступной.
Главное — правильно обращаться с самой установкой палитры. Подробностей, к сожалению, не помню. Но помню точно что все работало как и описывалось. Правда все остальные окна на экране отображали кизяк (они, ессно, не обрабатывали сообщения об изменении аппаратной палитры), но зато мое окно рисовалось правильно