Hintergrund einer Trackbar?



  • guten abend zusammen!

    bin in winapi noch nicht so gewieft, also eine frage:
    wie ändere ich die hintergrundfarbe einer trackbar? gibt es eine WM_CTLCOLORSTATIC ähnliche message für das gute Stück? oder funktioniert das über irgendeine TBM_... nachricht?

    häng nun schon ziemlich lange an diesem Problem! kann mir jemand helfen?

    danke, tschoe



  • Die Trackbars verwenden das CustomDraw-Feature (siehe NM_CUSTOMDRAW). Bevor die einzelnen Items der Trackbar gezeichnet werden, kannst Du den Hintergrund setzen und für alles weitere die Default-Aktionen laufen lassen:

    case WM_NOTIFY:
        switch(((LPNMHDR)lParam)->code)
        {
            case NM_CUSTOMDRAW:
                if(((NMCUSTOMDRAW*)lParam)->dwDrawStage == CDDS_PREPAINT)
                {
                    RECT rc;
                    GetClientRect(((LPNMHDR)lParam)->hwndFrom, &rc);
                    FillRect(((NMCUSTOMDRAW*)lParam)->hdc, &rc, (HBRUSH)(COLOR_WINDOW + 1));
                    SetWindowLongPtr(hWnd, DWLP_MSGRESULT, (LONG_PTR)CDRF_DODEFAULT);
                    return(TRUE);
                }
                break;
            default:
                break;
        }
        break;
    


  • klasse, es funktioniert! allerdings erst nachdem ich
    "SetWindowLongPtr(hWnd, DWLP_MSGRESULT, (LONG_PTR)CDRF_DODEFAULT);"
    durch
    "SetWindowLong(hwnd, DWL_MSGRESULT, (LONG)CDRF_DODEFAULT);"
    ersetzt hab! bin da wahrscheinlich nicht mehr ganz auf der höhe der zeit!

    vielen dank, tschoe


Anmelden zum Antworten