Child Windows anklicken
-
Guten tag zusammen,
Ich arbeite zur Zeit an einem Periodensystem, allerdings ist mein Problem, dass ich die Child Windows, welche ich als Buttons für die Elemente verwende, nicht dazu bringen kann eine ID an WM_COMMAND zurück zu geben.
Ich habe beim erstellen der Child Windows auch bereits eine HMENU ID dazu geschrieben, allerdings scheint das nicht zu funktionieren.
Ich könnte natürlich einfach die Klasse BUTTON verwenden, allerdings hatte ich da das Problem, dass ich die Buttons zwar einfärben konnte, danach allerdings die Abkürzungen der Elemente nicht mehr sichtbar waren.
Nun lautet meine Frage, wie ich den Child Windows eben eine ID zuschreiben kann, die Sie beim anklicken zurück geben, oder wie ich die Buttons so einfärben kann, dass die Schrift auf ihnen noch lesbar ist.
Ich bedanke mich schon mal für die Antworten.
PS.: Ich habe keinen Code gepostet, da ich keine Ahnung habe was ihr sehen wollt/müsst.
Also bitte sagen, welchen Teil des Codes ihr braucht.
-
Tempestas schrieb:
Ich habe beim erstellen der Child Windows auch bereits eine HMENU ID dazu geschrieben, allerdings scheint das nicht zu funktionieren.
Die Stelle an der die Child windows erzeugt werden wäre nicht schlecht als Quellcode.
Bist du sicher, das Du MFC verwendest ?
-
Also ich habe das ausgewählt wegen dem C++. Allerdings habe ich keine Ahnung was das MFC heißt.
Hier ist ein Ausschnitt aus dem Code, da alle Elemente zu viel wären:
hWndH = CreateWindow("Nichtmetall", "", WS_CHILD | WS_VISIBLE | WS_BORDER, 20, 20, 40, 40, hWnd, (HMENU) ID_H, hInstNichtmetall, NULL); hWndHe = CreateWindow("Nichtmetall", "", WS_CHILD | WS_VISIBLE | WS_BORDER, 700, 20, 40, 40, hWnd, (HMENU) ID_He, hInstNichtmetall, NULL); hWndLi = CreateWindow("Metall", "", WS_CHILD | WS_VISIBLE | WS_BORDER, 20, 60, 40, 40, hWnd, (HMENU) ID_Li, hInstButton, NULL); hWndBe = CreateWindow("Metall", "", WS_CHILD | WS_VISIBLE | WS_BORDER, 60, 60, 40, 40, hWnd, (HMENU) ID_Be, hInstButton, NULL); hWndB = CreateWindow("Halbmetall", "", WS_CHILD | WS_VISIBLE | WS_BORDER, 500, 60, 40, 40, hWnd, (HMENU) ID_B, hInstButton, NULL); hWndC = CreateWindow("Nichtmetall", "", WS_CHILD | WS_VISIBLE | WS_BORDER, 540, 60, 40, 40, hWnd, (HMENU) ID_C, hInstButton, NULL); hWndN = CreateWindow("Nichtmetall", "", WS_CHILD | WS_VISIBLE | WS_BORDER, 580, 60, 40, 40, hWnd, (HMENU) ID_N, hInstButton, NULL); hWndO = CreateWindow("Nichtmetall", "", WS_CHILD | WS_VISIBLE | WS_BORDER, 620, 60, 40, 40, hWnd, (HMENU) ID_O, hInstButton, NULL); hWndF = CreateWindow("Nichtmetall", "", WS_CHILD | WS_VISIBLE | WS_BORDER, 660, 60, 40, 40, hWnd, (HMENU) ID_F, hInstButton, NULL); hWndNe = CreateWindow("Nichtmetall", "", WS_CHILD | WS_VISIBLE | WS_BORDER, 700, 60, 40, 40, hWnd, (HMENU) ID_Ne, hInstButton, NULL);
-
Tempestas schrieb:
Also ich habe das ausgewählt wegen dem C++. Allerdings habe ich keine Ahnung was das MFC heißt.
Hier ist ein Ausschnitt aus dem Code, da alle Elemente zu viel wären:
hWndH = CreateWindow("Nichtmetall", "", WS_CHILD | WS_VISIBLE | WS_BORDER, 20, 20, 40, 40, hWnd, (HMENU) ID_H, hInstNichtmetall, NULL);
1. Das richtige Forum wäre hier WinAPI
2. Anmerkungen:
Du hast eigene Klassen wie "Nichtmetall" registriert ?Üblich bei StandardButton wäre z.B. in WM_CREATE sowas:
CreateWindow(TEXT("button"), TEST("egal"), WS_CHILD|WS_VISIBLE|BS_PUSHBUTTON, 20, 20, 40, 40, hWnd, (HMENU) ID_H, ((LPCREATESTRUCT)lParam)->hInstance, NULL);
Für nicht StandardControls könnte der BS_OWNERDRAW und/oder BS_NOTIFY style notwendig werden.
Button Messages
http://msdn.microsoft.com/en-us/library/windows/desktop/bb775941.aspxThe WM_CTLCOLORBTN message is sent to the parent window of a button before drawing the button.
The parent window can change the button's text and background colors. However, only owner-drawn
buttons respond to the parent window processing this message.