WinAPI Anfänger, Fenster Leeren
-
Hallo liebe Programmierer, ich habe nun angefangen mich mit der WinAPI zu beschäftigen. Nach langen programmieren von C++ Konsolenanwendungen gibt es aber für mich jetzt ein Problem was man denke ich auch im Code sehen kann....ich verstehe den ablauf noch nicht so recht und packe deshalb alles in diese switch case anwendung und lasse hin und her springen, wie kann ich denn nun auch wie in den kosolenanwendungen alles in einzelnen Funktionen aufteilen und dennoch das fenster und buttons neu zeichnen und erstellen und so weiter. Ich hoffe man kann mein pRoblem verstehen und mich etwas aufklären .... noch eine weiter frage..gibt es auch eine andere möglichkeit die buttons zu entfernen ...alle auf einmal so das ich das fenster komplett neu aufbauen kann ?
lg Sc0rpe
EDIT: Also ich hab jetzt schon mein Problem heraausgefunden wie ich dort das mit den Funktionen regel, und zwar hab ich vergessen den Handle auf mein fenster als Parameter einzurichten und zu übergeben....jetzt such ich aber noch immer nach der Lößung wie ich mir die tausend
DestroyWindow();
aufrufe sparen kann und direkt das fenster leeren kan oder so ähnlich, denn ich möchte das man immer in das Menü zurückkehren kann
kann mir einer helfen ?
-
Wenn du mit C++ Arbeitest, leg dir einfach einen
std::vector<HANDLE>
an, in dem du die einzelnen Fensterhandles speicherst und rufDestroyWindow
in einer Schleife auf. Ansonsten -> Msdn
-
Just here schrieb:
Wenn du mit C++ Arbeitest, leg dir einfach einen
std::vector<HANDLE>
an, in dem du die einzelnen Fensterhandles speicherst und rufDestroyWindow
in einer Schleife auf. Ansonsten -> Msdnhm...gute idee so ist es schonmal eifnacher, aber gibts denn nicht ne Möglichkeit gleich das ganze Fenster zu entleeren?
-
Tu am besten das, was dir Just here schon gesgat hat. Einfach eine Funktion schreiben, in der du die einzelnen Handles übergibst und in einer Schleife zerstören lässt. "Entleeren" ist, wie ich finde, auhc nicht der richtige Ausdruck, da die Buttons alles kleine CHILD Windows sind ( Du hast sicherlich in den Parametern, bei denen du die Buttons erstellst, irgendwo ein WS_CHILD stehen), das bedeutet, dass die Buttons alles kleine "Kinder-" Fenster sind, die nur auf deinem "Eltern-" Fenster fixiert sind, was du auch daran erkennst, dass sie alle ein eigenes Handle halt haben. Vielleicht gibt es aber auhc schon eine vordefinierte Funktion von Windoof, die alle gewünschten Fenster zerstört. Müsstest du einmal ein wenig in der msdn stöbern bzw. googlen.
-
Wieso genau musst du die ganzen Buttons alle zerstören? Nachdem du was von Menü faselst, würde ich jetzt mal annehnem, dass du die Buttons ständig erzeugen und wieder zerstören willst, wenn zwischen Menü und was auch immer die Buttons sind, gewechselt werden soll? Wieso packst du die Buttons nicht in ein gemeinsames Child Window und schaltest dieses als Ganzes einfach entweder Visible oder nicht!?
-
Wenn du ein Fenster mit DestroyWindow schließt, dann werden alle Child-Windows mit zerstört. Mache dir also ein Unterfenster in dem alle zu zerstörenden Fenster als Kind-Fenster enthalten sind und mache einfach das Unterfenster zu.
Wobei ShowWindow(windowhandle, SW_HIDE) vielleicht sinnvoller ist, dann ist das Fenster weg, kann aber aber mit ShowWindow(windowhandle, SW_SHOW) wieder sichtbar gemacht werden.
-
Besorg Dir ein gutes (E)Buch zur WinApi => z.B. Petzold.
Lies es und probier es aus.
Dann wirst Du lernen wie Windows programmtechnisch tickt.