Это некоторое время, так как я сделал это, но я пытаюсь добавить пользовательскую кнопку, графическую к кнопке окон с некоторыми прозрачными областями. Я попробовал различные схемы, но, может казаться, не заставляю прозрачные области показывать. Вот мой код:
hbmpUpDisabled = LoadImage(instance,MAKEINTRESOURCE(IDB_UPARROWDISABLED), IMAGE_BITMAP, 0, 0, LR_DEFAULTSIZE | LR_LOADTRANSPARENT | LR_LOADMAP3DCOLORS );
SendMessage(GetDlgItem(hWndDlg, IDC_MOVEUP),BM_SETIMAGE,(WPARAM)IMAGE_BITMAP,(LPARAM)hbmpUpDisabled);
Кто-либо замечает какие-либо проблемы здесь? Это работает, если мой битовый массив является 1-разрядным битовым массивом. Я не мог заставить битовый массив на 32 бита работать, и я не уверен, как установить битовый массив на 8 битов или на 24 бита, чтобы сделать это.... Я попробовал пользовательские 255 0 255 цветов (какой IIRC является прозрачным значением по умолчанию), но до сих пор никакая радость....
LR_LOADMAP3DCOLORS должен сопоставить серый цвет - в исходном изображении - с текущим цветом поверхности кнопки. Кнопки не используют AlphaBlt или TransparentBlt, поэтому нет никакого способа (кроме пользовательского рисования) установить битмап с прозрачными или альфа-областями на кнопку и ожидать, что он будет работать. Вы просто должны предварительно подготовить битмап с правильным цветом кнопки в его фоновых областях.