Hallo,
ich habe einige kleine Klassen geschrieben, die die Standardsteuerelemte der Windows API kapseln. Jedes Fenster hat eine Liste von Steuerelemten, die es enthält. Kommt jetzt eine Nachricht für ein Steuerelement, wird diese in der WindowCallback an das Steuerelement weitergeleitet, so:
|
C-/C++-Quelltext
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
|
LRESULT CALLBACK WndProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam)
{
switch(msg)
{
case WM_DESTROY:
{
CWindow::windows[hWnd]->closed = true;
return 0;
}
case WM_COMMAND:
{
CWindow::windows[hWnd]->controlElements[(HWND)lParam]->SetEvent(HIWORD(wParam));
return 0;
}
}
return DefWindowProc(hWnd, msg, wParam, lParam);
}
|
Das Problem ist jetzt, ich habe Groupboxes, die auch eine Liste von Steuerelementen enthalten. Wenn jetzt eine Nachricht für zum Beispiel einen Button in einer Groupbox kommt, wird die Nachricht nicht an den Button weitergeleitet, da hWnd jetzt das Handle zur Groupbox ist, oder? lParam müsste jetzt der Handle des Button sein, sehe ich das richtig. Wie würdet ihr sowas lösen? Ich kann mir nur vorstellen, alle Fenster durchzugehen und zu überprüfen ob hWnd ein Childwindow ist. Danke schonmal.