LordofFrog
Enthusiast
Thread Starter
- Mitglied seit
- 03.11.2007
- Beiträge
- 416
Hallo,
ich arbeite mich grad in die Windows-API ein und hab ein Problem.
Ich habe ein Windowsfenster mit einer Menübar erstellt. Doese Menübar hat ein paar einträge. Wird einer der Einträge angeklickt, wird ein Button erstellt.
Mein Problem ist nun, dass wenn ich auf den Button klicke dieser wieder zerstört werden soll. Leider ist das Handle zu dem button nicht mehr im Speicher, sodass der Button nicht zerstört werden kann.
Anbei der Code für die entsprechende CALLBACK funktion.
Gibt es eine möglichkeit, dem hwnd den Handle zu dem Button zu übergeben,sodass ich darüber auf den Button zugreifen kann?
LoF
ich arbeite mich grad in die Windows-API ein und hab ein Problem.
Ich habe ein Windowsfenster mit einer Menübar erstellt. Doese Menübar hat ein paar einträge. Wird einer der Einträge angeklickt, wird ein Button erstellt.
Mein Problem ist nun, dass wenn ich auf den Button klicke dieser wieder zerstört werden soll. Leider ist das Handle zu dem button nicht mehr im Speicher, sodass der Button nicht zerstört werden kann.
Code:
LRESULT CALLBACK WindowProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
{
switch (uMsg)
{
case WM_CREATE:
{
DrawMenu(hwnd);
return 0;
}
case WM_COMMAND:
{
switch (wParam)
{
case 1:
{
PostQuitMessage(0);
return 0;
}
case 2:
{
const wchar_t CLASS_NAME2[] = L"Kind";
HWND hwndButton= CreateWindow(L"BUTTON", L"API_SETTINGS", WS_CHILD | WS_VISIBLE, 10, 10, 120, 120, hwnd, (HMENU)3, (HINSTANCE)GetWindowLongPtr(hwnd, GWL_HINSTANCE), NULL);
return 0;
}
case 3:
{
//DestroyWindow(hwndButton);
return 0;
}
}
return 0;
}
case WM_DESTROY:
{
PostQuitMessage(0);
return 0;
}
case WM_PAINT:
{
PAINTSTRUCT ps;
HDC hdc = BeginPaint(hwnd, &ps);
FillRect(hdc, &ps.rcPaint, (HBRUSH) (COLOR_WINDOW+1));
EndPaint(hwnd, &ps);
return 0;
}
case WM_CLOSE:
{
if (MessageBox(hwnd, L"Really quit?", L"My application", MB_OKCANCEL) == IDOK)
{
DestroyWindow(hwnd);
}// Else: User canceled. Do nothing.
return 0;
}
}
return DefWindowProc(hwnd, uMsg, wParam, lParam);
}
Anbei der Code für die entsprechende CALLBACK funktion.
Gibt es eine möglichkeit, dem hwnd den Handle zu dem Button zu übergeben,sodass ich darüber auf den Button zugreifen kann?
LoF