Exemplo n.º 1
0
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);
}
Exemplo n.º 2
0
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);
}