2 Fragen
-
hey mal 2 Fragen:
1. Ich habe meinem Dialog einen Static Text gegeben. Da die Hintergrundfarbe von meinem Dialog nicht standart ist, sieht das blöd aus, wegen dem Hintergrund des Textes. Wie mache ich das, dass nur der Text gezeichnet wird und nicht mit Hintergrundfarbe hinter den Text? Muss ich da was in den Eigenschaften umstellen?
2. Wie kann ich Steuerelemente von einem Dialog z.b. Check Boxen deaktivieren?
Darunter verstehe ich, dass es noch da ist, man es aber nicht anklicken kann solange es wieder aktiviert wird. Wie kann man es dann wieder Aktivieren?
Vielen Dank
-
Arbeitest du mit einer IDE`?
-
1. Ich glaube, du musst WM_CTLCOLOR verarbeiten (bin grad nicht sicher). Du kannst dein Static transparent setzen (SetBkMode(TRANSPARENT)).
2. EnableWindow
3. es heißt Standard!

-
danke, ich hab es mal so probiert:
case WM_CTLCOLORSTATIC: hdcStatic = (HDC)wParam; SetBkMode(hdcStatic, TRANSPARENT); return TRUE;es ändert jedoch leider nichts

-
Tobiasexe schrieb:
danke, ich hab es mal so probiert:
case WM_CTLCOLORSTATIC: hdcStatic = (HDC)wParam; SetBkMode(hdcStatic, TRANSPARENT); return TRUE;es ändert jedoch leider nichts

Du machst ja auch nichts! Bitte lies doch mal die Doku, zu dem was Du zurückgeben musst!
Du müsstest einen NULL Brush zurückgeben. Du gibst TRUE zurück!
-
nach wie vor hat es einen Hintergrund:
// ganz oben static HBRUSH g_hbrBackground = 0; case WM_CTLCOLORSTATIC: hdcStatic = (HDC)wParam; SetBkMode(hdcStatic, TRANSPARENT); return (long)g_hbrBackground;
-
g_hbrBackground ist was?
-
steht da doch...
static HBRUSH g_hbrBackground = 0;
-
Tobiasexe schrieb:
steht da doch...
static HBRUSH g_hbrBackground = 0;Falsch ein Null Brush ist
GetStockObject(NULL_BRUSH);
-
geht aber trotzdem nicht

static HBRUSH g_hbrBackground = (HBRUSH)GetStockObject(NULL_BRUSH);; case WM_CTLCOLORSTATIC: hdcStatic = (HDC)wParam; SetBkMode(hdcStatic, TRANSPARENT); return (long)g_hbrBackground;
-
sollte es aber. Der Code ist in Ordnung!
-
Edit controls that are not read-only or disabled do not send the WM_CTLCOLORSTATIC message; instead, they send the WM_CTLCOLOREDIT message.
-
Zu 1.)
(Funktioniert aber nicht mit XP-Style, da musst Du den Hintergrund des Fensters als Brush zurückgeben !)case WM_CTLCOLORSTATIC: // Hintergrundfarbe des Static-Steuerelements anpassen if ((HWND) lParam == hwndStatic) { SetBkMode ((HDC) wParam, TRANSPARENT) ; return (BOOL) GetStockObject (NULL_BRUSH) ; }... zu 2.)
http://msdn.microsoft.com/en-us/library/ms646291.aspx
Gruß
Greenhorn