Änderung des Fensters durch Menüauswahl
-
Hallo,
ich habe bei einer win32App, die verschiedene Werte ausrechnen soll, ein Menü erstellt. Wie kann ich jetzt erreichen, dass andere Buttons und Eingabefelder in meinem Fenster erscheinen, wenn ich ein bestimmten Menüpunkt wähle?kann mir da jemand weiterhelfen?
Grüße
-
CreateWindow, CreateDialog, ShowWindow....
-
Ich habe genau das gleiche Problem. Das mit createwindow und so ist mir klar, aber wie kann man schreiben, dass diese dialogfelder erst bei menüklick erscheinen und die anderen verschwinden?
-
Entweder
einmal alle Fenster erstellen, und je nach Bedarf via ShowWindow ein/ausblenden,
oder
nach Bedarf die Fenster via CreateWindow/DestroyWindow erstellen bzw. zerstören.
-
funcoder schrieb:
Ich habe genau das gleiche Problem. Das mit createwindow und so ist mir klar, aber wie kann man schreiben, dass diese dialogfelder erst bei menüklick erscheinen und die anderen verschwinden?
Indem man die entsprechende Aktivität in einen WM_COMMAND Handler packt... Wo ist das Problem.
Versuch es doch mal mit dem Lesen von ein paar Tutorials.
-
Danke schonmal! Tut mir leid ich kenne mich in WinApi noch nicht so gut aus.
Ich würde mich sehr über ein Codebeispiel freuen, was in WM_COMMAND stehen muss (oder woanders?), damit Button1 und Button2 verschwinden und zwei neue (Button3, Button4) erstellt werden. CreateWindow funktioniert leider in WM_COMMAND nicht.(Nur bei mir?)
Ein Tutorial in dem das erklärt wird habe ich auch nach langem googlen nicht gefunden.LRESULT CALLBACK WinProc(HWND hWnd,UINT msg,WPARAM wParam,LPARAM lParam) { HWND hWndButton1, hWndButton2; switch (msg) { case WM_PAINT: { PAINTSTRUCT ps; HDC hDC; const char szText[] = "Eingabefeld:"; hDC = BeginPaint(hWnd, &ps); { TextOut(hDC, 50, 75, szText, sizeof(szText) - 1); } EndPaint(hWnd, &ps); return 0; } case WM_CREATE: { HMENU hMenu, hSubMenu; hMenu = CreateMenu(); hSubMenu = CreatePopupMenu(); AppendMenu(hMenu, MF_STRING | MF_POPUP, (UINT)hSubMenu, "Menu1"); AppendMenu(hSubMenu, MF_STRING, ID_MENU1_SUBMENU1, "Submenu1"); AppendMenu(hSubMenu, MF_STRING, ID_MENU1_SUBMENU2, "Submenu2"); hSubMenu = CreatePopupMenu(); AppendMenu(hMenu, MF_STRING | MF_POPUP, (UINT)hSubMenu, "Menu2"); AppendMenu(hSubMenu, MF_STRING, ID_MENU2_SUBMENU1, "Submenu1"); AppendMenu(hSubMenu, MF_STRING, ID_MENU2_SUBMENU2, "Submenu2"); hSubMenu = CreateMenu(); AppendMenu(hMenu, MF_STRING, ID_ABOUT, "Info"); hSubMenu = CreateMenu(); AppendMenu(hMenu, MF_STRING, ID_HELP, "?"); SetMenu(hWnd, hMenu); hEdit = CreateWindowEx(WS_EX_CLIENTEDGE, "edit", buffer, WS_CHILD | WS_VISIBLE | ES_AUTOHSCROLL | ES_AUTOVSCROLL, 50, 100, 100, 25, hWnd, NULL, ((LPCREATESTRUCT) lParam) -> hInstance, NULL); hWndButton1 = CreateWindow( "button", "Button1", WS_CHILD | WS_VISIBLE, 50, 200, 100, 25, hWnd, NULL, ((LPCREATESTRUCT) lParam) -> hInstance, NULL); hWndButton2 = CreateWindow( "button", "Button2", WS_CHILD | WS_VISIBLE, 200, 200, 100, 25, hWnd, NULL, ((LPCREATESTRUCT) lParam) -> hInstance, NULL); } return 0; case WM_COMMAND: switch(LOWORD(wParam)) { case ID_MENU1_SUBMENU1: break; case ID_MENU2_SUBMENU1: break; case ID_\1: MessageBox(NULL, "", "Info", MB_ICONINFORMATION); break; case ID_HELP: MessageBox(NULL, "", "Hilfe", MB_ICONINFORMATION); break; } case WM_DESTROY: { PostQuitMessage(0); return 0; } break; } return DefWindowProc(hWnd,msg,wParam,lParam); }
Vielen Dank!
-
Mach erst mal den Close-Tag hin und rücke ordentlich ein. Das ist wohl das Mindeste :p
-
Die Einrückungen sind beim Posten verschwunden, eigentlich hatte ich welche!
Was ist ein Close-Tag?
-
Chesper schrieb:
Die Einrückungen sind beim Posten verschwunden, eigentlich hatte ich welche!
Was ist ein Close-Tag?
Am Ende msust du noch [ / c p p ] ohne LEerzeichen hinmachen. Dann hätte es auch den Code-Style behalten
MfG SideWinder
-
Danke, jetzt gehts!
...nur das Programm noch nicht
-
Weiß wirklich niemand, wie das genau funktioniert?
Würde mich sehr über Codebeispiele, Tipps oder so freuen!
Danke
-
Kennt jemand ein Tutorial, wo HideWindow und ShowWindow erklärt werden? vielleicht bekomme ich es damit hin...
-