Битмэпы панели инструментов
Я рисую на Photoshop'е несколько битмэпов в true color'е (размер 16x15). Потом преобразую их в 16-цветные. После этого каждый битмэп имеет свою палитру. В своей программе я создаю toolbar и присоединяю к нему эти битмэпы по одному. Когда я запускаю программу, битмэпы отображаются неправильно: некоторые цвета становятся другими, некоторые цвета становятся прозрачными, а тот цвет, который я хотел сделать прозрачным, рисуется непрозрачным. Не все битмэпы так глючат, но многие. Я не нашел никакой связи между индексом цвета или его RGB значением и тем, как он отображается.
Я - полный ламер в Windows 95. Пользуюсь для создания панели инструментов функцией CreateToolbar(). Когда до нее доходит дело, она, видимо пытаясь взять из ресурсов этот 24-битный битмэп, вылетает с сообщением "программа совершила недопустимую операцию...". А 256-цветные битмэпы программа не рисует. Что же делать?
Попробовал True Color'ные битмэпы - не получилось.
Я - полный ламер в Windows 95. Пользуюсь для создания панели инструментов функцией CreateToolbar(). Когда до нее доходит дело, она, видимо пытаясь взять из ресурсов этот 24-битный битмэп, вылетает с сообщением "программа совершила недопустимую операцию...". А 256-цветные битмэпы программа не рисует. Что же делать?
Windows 95???
Да, это серьёзно. Значит так, выкидываешь подальше этот 95, ставишь XP, и пользуешься функцией CreateToolBarEx. Рисовать, если не знаешь, надо в линию, т.е. все значки в одном рисунке, желательно 16x16. Потом делаешь массив структур:
TBBUTTON toolbar_buttons[] = {
{0, IDM_???1, TBSTATE_ENABLED, TBSTYLE_BUTTON, NULL, NULL},
{1, IDM_???1, TBSTATE_ENABLED, TBSTYLE_BUTTON, NULL, NULL} ... };
И вызываешь CreateToolbarEx(hDlg, WS_CHILD, ???, 10, NULL, (UINT)LoadBitmap(hInstance, "BITMAP_0", toolbar_buttons, ???, 16, 16, 16, 16, sizeof(TBBUTTON));
И всё работает как надо.
Я писал так:
CreateToolbarEx(hWnd,флаги,???,???,[COLOR=red]hInstance[/COLOR],[COLOR=red]IDB_TOOLS[/COLOR],ToolbarButtons,кол-во кнопок,0,0,0,0,sizeof(TBBUTTONS));
Это работало только с 16-цветными битмэпами. А теперь попробовал так:
CreateToolbarEx(hWnd,флаги,???,???,[COLOR=green]NULL[/COLOR] ,[COLOR=green](UINT)LoadBitmap(hInstance,(char*)IDB_TOOLS)[/COLOR] ,ToolbarButtons,кол-во кнопок,0,0,0,0,sizeof(TBBUTTONS));
Не знаю, в чем тут прикол, но в таком виде заработало.
Не знаю, в чем тут прикол, но в таком виде заработало.
Прикол в том, что непонятно, что такое ID ресурса, нет такого определения, поэтому у тебя вместо рисунка могло что угодно загружаться. А так загружаешь рисунок, и всё нормально.