So wie ich das sehe müsste es mit folgendem Code funktionieren:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7:
| hProfileBtn[i] := CreateWindow('STATIC', PChar(@s[1]), WS_VISIBLE or WS_CHILD or SS_NOTIFY or SS_CENTER, (GetSystemMetrics(SM_CXSCREEN) div 2) + x - (ButtonWidth div 2), (GetSystemMetrics(SM_CYSCREEN) div 2) + y - (ButtonHeight div 2), ButtonWidth, ButtonHeight, hWnd, (10 * i) + IDC_BTN_PROFILE, hInstance, nil); SetBkColor(GetDC(hProfileBtn[i]), RGB(0, 0, 255)); |
Macht er aber nicht...
Wenn ich den letzten Aufruf (SetBkColor...) aufschlüssele und mir die Rückgabewerte ausgeben lasse, sind alles "normale" Werte (keine Fehlerangaben). Das einzige was mich stutzig macht, ist die Rückgabe von SetBkColor. Laut PSDK wird die alte Farbe zurückgegeben. Als Rückgabe kommt immer dezimal 16.777.215 (hex $00.FF.FF.FF). Das entspricht aber in keinster Weise dem Farbcode für das schnöde Windows-Grau (Standardhintergrund).
Muss ich dem STATIC-Window vorher noch etwas mitteilen?
Ach ja, BackgroundMode ist OPAQUE. Mit TRANSPARENT klappt's auch nicht.