Почему SetDIBColorTable не работает?
Программка у меня простая, но заставить ее работать никак не получается.
Я создаю функцией CreateDIBSection 8-битовый битмап (т.е. всего 256 цветов в нем). Создаю совместимый с DC главного окна контекст, выбираю в него этот созданный битмап. Потом по событию WM_KEYDOWN делаю BitBlt из совместимого контекста в контекст окна.
Теперь мне надо поменять палитру у этой самой битмапы. К примеру, поменять нулевой цвет палитры с черного на зеленый, а потом закрасить весь битмап нулевым цветом. В функцию SetDIBColorTable я передаю мой совместимый контекст (в котором созданный битмап выбран) и параметры палитры. Вызываю функцию, но ничего не происходит.
Либо она возвращает нуль (а GetLastError цифру 8, что значит "Invalid handler"), либо 1 (поскольку я только один цвет меняю в палитре), но сам цвет в палитре остается без изменения (судя по результату последующего BitBlt).
Что я делаю неправильно? Может палитру нужно не только менять у битмапы, но еще у контекста, в котором она хранится? Или еще и у контекста главного окна?
У меня Win2K, видеорежим TrueColor 24 бита, компилятор Borland C++ 5.01 (ну вот такой у меня завалялся :D )