Der Code ist nur ein "unvollendetes" Beispiel in dem die Vorgehensweiser erklärt wird.
Das du nix siehst liegt wohl daran das du in der Procedure DrawMyButtonstyle() die Checkbox
komplett neu Zeichnen darfst.
PS.: Ausserdem ist im Code oben eine falsche Zeile hineingerutscht. Es muss
FillRect(lpdis.hDC, lpdis.rcItem, GetStockObject(LTGRAY_BRUSH));
heissen.