Панели инструментов Win32 и 24-битные изображения

Поддерживает ли WinAPI 24-битные изображения? Я хотел бы использовать 24-битные иконки (больше определений) в качестве изображений кнопок панели инструментов. Я загрузил значок так:

// create toolbar
HWND hTool = CreateWindowEx( 0, TOOLBARCLASSNAME, NULL, WS_CHILD | WS_VISIBLE, 0, 0, 0, 0,
m_hWnd[ AUXILIARY_VIEWPORT ], ( HMENU )IDC_TEX_TOOL, GetModuleHandle( NULL ), NULL );

// Send the TB_BUTTONSTRUCTSIZE message, which is required for backward compatibility.
SendMessage( hTool, TB_BUTTONSTRUCTSIZE, ( WPARAM )sizeof( TBBUTTON ), 0 );
SendMessage( hTool, TB_SETBUTTONSIZE, 0, MAKELPARAM( 32, 32 ) );
SendMessage( hTool, TB_SETBITMAPSIZE, 0, MAKELPARAM( 32, 32 ) );

// declare button and bitmap structs
TBBUTTON tbb[ 19 ];
TBADDBITMAP tbab;

HICON hIcon = ( HICON )LoadIcon( GetModuleHandle( NULL ), MAKEINTRESOURCE( IDI_GRADIENT ) );

// create and add imagelist

HIMAGELIST hImgList = ImageList_Create( 32, 32, ILC_MASK, 1, 1 );
int nR = ImageList_AddIcon( hImgList, hIcon );
SendMessage( hTool, TB_SETIMAGELIST, 0, ( LPARAM )hImgList);

ZeroMemory( tbb, sizeof( tbb ) );
tbb[ 0 ].iBitmap = 0;
tbb[ 0 ].fsState = TBSTATE_ENABLED;
tbb[ 0 ].fsStyle = BTNS_CHECK;
tbb[ 0 ].idCommand = IDM_EDITTEXTURE_ENABLE;
...
SendMessage( hTool, TB_ADDBUTTONS, SIZEARRAY( tbb ), ( LPARAM )&tbb );

Изображения загружаются в 16-битный формат при загрузке … Как я могу использовать изображения высокого разрешения на кнопках?

2

Решение

Проверять, выписываться Вот чтобы получить полнофункциональную 24-битную цветную панель инструментов. Там также есть демонстрационное решение.

Основная идея заключается в использовании:

static const UINT   kToolBarBitDepth (ILC_COLOR24);
4

Другие решения

Списки изображений Windows действительно поддерживают 24-битный цвет и многие другие форматы. Вам необходимо указать цветовой формат в флагах, которые вы передаете ImageList_Create, Для 24-битного цвета необходимо включить ILC_COLOR24 флаг. Флаги документированы здесь: http://msdn.microsoft.com/en-us/library/windows/desktop/bb775232.aspx

2

Проблема решена … для тех, кому небезразлично при вызове ImageList_Create () использовать ILC_COLOR24 или ILC_COLOR32 … это скажет системе использовать 24 или 32 изображения в секунду.

1
По вопросам рекламы [email protected]