Подскажите по кнопкам и alphablend
От: petersonik  
Дата: 27.01.07 12:09
Оценка:
Хочу сделать полупрозрачные кнопки на диалоге.

Создал в диалоге BUTTON с OWNERDRAW,
CONTROL "Button1", 555, "button", BS_OWNERDRAW | BS_CENTER | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 208, 96, 50, 28

по WM_DRAWITEM делаю

static LRESULT wmDrawItem(HWND hwnd, UINT uMessage, WPARAM wparam, LPARAM lparam) {
DRAWITEMSTRUCT *lpdis = (LPDRAWITEMSTRUCT) lparam;
char tmp[222];
int i, k, off;
HDC hdcMem;
BLENDFUNCTION blend;

if(lpdis->itemID!=555) return FALSE;

blend.BlendOp = 0;//AC_SRC_OVER;
blend.BlendFlags = 0;
blend.AlphaFormat = 0;
blend.SourceConstantAlpha = 18;

hdcMem = CreateCompatibleDC(lpdis->hDC);
SelectObject(hdcMem, btm_toolbar);
AlphaBlend(lpdis->hDC,
lpdis->rcItem.left,
lpdis->rcItem.top,
lpdis->rcItem.right — lpdis->rcItem.left,
lpdis->rcItem.bottom — lpdis->rcItem.top,
hdcMem,
30*((lpdis->itemState&ODS_SELECTED)>0), 0,
30,
30,
blend);
DeleteDC(hdcMem);
}

Получаю с каждым нажатием — все ярче и ярче, пока фон вообще не убирается.

Как сделать правильно?
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.