Problem mit Ownerdrawn Button.
-
Tach,
ich habe mir nen Button erstellt den ich via Ownerdraw in der WM_DRAWITEM bearbeite, leider verliert der Button so diese Form als Knopf halt, sprich wenn ich mit der maus drauf klicke soll er versunken sein und wenn ich los lasse wieder hochkommen. aber nun ist er halt "Aal glatt", wie stell ich das an dieses Effekt wieder herzustellen?Gruß Tobi.
-
Das Zeichnen musst Du, jenachdem welchen State der Button hat, vornehmen.
Also 3D Rahmen Zeichnen, wenn der Button nicht nicht reingedrückt wird, ansonsten halt nicht.
-
wie kann ich den Button status mit der LPDRAWITEMSTRUCT abfragen?
-
case WM_DRAWITEM: #define lpdis (LPDRAWITEMSTRUCT) lParam; hdcMem = CreateCompatibleDC (lpdis->hDC); if (lpdis->itemState & ODS_SELECTED) { if (lpdis->CtlID == BTN_CLOSE) SelectObject (hdcMem, LoadBitmap (g_hInst, MAKEINTRESOURCE (CLOSEP_BMP))); else if (lpdis->CtlID == BTN_TRAY) SelectObject (hdcMem, LoadBitmap (g_hInst, MAKEINTRESOURCE (TRAYP_BMP))); else if (lpdis->CtlID == BTN_MINIMIZE) SelectObject (hdcMem, LoadBitmap (g_hInst, MAKEINTRESOURCE (MINIP_BMP))); } else { if (lpdis->CtlID == BTN_CLOSE) SelectObject (hdcMem, LoadBitmap (g_hInst, MAKEINTRESOURCE (CLOSEN_BMP))); else if (lpdis->CtlID == BTN_TRAY) SelectObject (hdcMem, LoadBitmap (g_hInst, MAKEINTRESOURCE (TRAYN_BMP))); else if (lpdis->CtlID == BTN_MINIMIZE) SelectObject (hdcMem, LoadBitmap (g_hInst, MAKEINTRESOURCE (MININ_BMP))); } StretchBlt (lpdis->hDC, lpdis->rcItem.left, lpdis->rcItem.top, lpdis->rcItem.right - lpdis->rcItem.left, lpdis->rcItem.bottom - lpdis->rcItem.top, hdcMem, 0, 0, 20, 20, SRCCOPY); DeleteDC (hdcMem); #undef lpdis return 0;ist nur so als Beispiel...
EDIT: für die zukunft: sowas steht alles in der doku
