C++ Erstellen und Zerstören von Fenstern

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.

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
 
Hardwareluxx setzt keine externen Werbe- und Tracking-Cookies ein. Auf unserer Webseite finden Sie nur noch Cookies nach berechtigtem Interesse (Art. 6 Abs. 1 Satz 1 lit. f DSGVO) oder eigene funktionelle Cookies. Durch die Nutzung unserer Webseite erklären Sie sich damit einverstanden, dass wir diese Cookies setzen. Mehr Informationen und Möglichkeiten zur Einstellung unserer Cookies finden Sie in unserer Datenschutzerklärung.


Zurück
Oben Unten refresh