static void winToggleDrawItem(Ihandle* ih, DRAWITEMSTRUCT *drawitem) { int width, height, border = 4, check; HDC hDC; iupwinBitmapDC bmpDC; width = drawitem->rcItem.right - drawitem->rcItem.left; height = drawitem->rcItem.bottom - drawitem->rcItem.top; hDC = iupwinDrawCreateBitmapDC(&bmpDC, drawitem->hDC, width, height); iupwinDrawParentBackground(ih, hDC, &drawitem->rcItem); check = SendMessage(ih->handle, BM_GETCHECK, 0, 0L); if (check) drawitem->itemState |= ODS_SELECTED; else drawitem->itemState |= ODS_DEFAULT; /* use default mark for NOT checked */ iupwinDrawButtonBorder(ih->handle, hDC, &drawitem->rcItem, drawitem->itemState); winToggleDrawImage(ih, hDC, width, height, border, drawitem->itemState); if (drawitem->itemState & ODS_FOCUS) { border--; iupdrvDrawFocusRect(ih, hDC, border, border, width-2*border, height-2*border); } iupwinDrawDestroyBitmapDC(&bmpDC); }
static void winToggleDrawItem(Ihandle* ih, DRAWITEMSTRUCT *drawitem) { /* called only when (ih->data->type==IUP_TOGGLE_IMAGE && (iupwin_comctl32ver6 || ih->data->flat)) */ int width, height, border = 4, check, draw_border; HDC hDC; iupwinBitmapDC bmpDC; width = drawitem->rcItem.right - drawitem->rcItem.left; height = drawitem->rcItem.bottom - drawitem->rcItem.top; hDC = iupwinDrawCreateBitmapDC(&bmpDC, drawitem->hDC, 0, 0, width, height); iupwinDrawParentBackground(ih, hDC, &drawitem->rcItem); if (!iupwin_comctl32ver6) { if (drawitem->itemState&ODS_SELECTED) iupAttribSet(ih, "_IUPWIN_PRESSED", "1"); } check = winToggleGetCheck(ih); if (check) drawitem->itemState |= ODS_SELECTED; else drawitem->itemState |= ODS_DEFAULT; /* use default mark for NOT checked */ if (!check && ih->data->flat) { if (drawitem->itemState & ODS_HOTLIGHT || iupAttribGet(ih, "_IUPWINTOG_ENTERWIN")) draw_border = 1; else draw_border = 0; } else draw_border = 1; /* when checked, even if flat thr border is drawn */ if (draw_border) iupwinDrawButtonBorder(ih->handle, hDC, &drawitem->rcItem, drawitem->itemState); winToggleDrawImage(ih, hDC, width, height, border, drawitem->itemState); if (drawitem->itemState & ODS_FOCUS && !(drawitem->itemState & ODS_NOFOCUSRECT) && iupAttribGetBoolean(ih, "CANFOCUS")) { border--; iupdrvDrawFocusRect(ih, hDC, border, border, width-2*border, height-2*border); } iupwinDrawDestroyBitmapDC(&bmpDC); }