Verwirrende Buttonabfrage - hilfe!



  • hi

    habe hier ein verwirrendes problem.

    habe in meinem programm ein fenster erstellt (hChild2), auf diesem befindet sich ein Beenden Button, welcher auch funktioniert.

    nun habe ich noch ein static (hStatic) erstellt auf welchem dann weitere viele buttons (hButton2) erstellt werden sollen. das problem ist nun, wie ich diese buttons in der gleichen abfrageschleife überwachen kann.

    es geht nicht, das ich den Beenden-button von hChild2 und den starten-butten von hStatic in einer MDIChildWndProc abfragen kann (siehe code unten). aber genau das will ich.

    kann ich irgendwie die meldungen von der hstatic an die hChild2 senden?
    vielleicht gibts soetwas ähnliches--> SendMessage(hstatic,leite_um ;),hChild,0);
    aber hButton2 soll auf hStatic bleiben.

    --> int WINAPI WinMain(HINST...

    WndClassEx.lpfnWndProc     = MDIChildWndProc;
                WndClassEx.lpszMenuName    = NULL;
                WndClassEx.lpszClassName   = szChild;
                WndClassEx.hbrBackground   = (HBRUSH)(COLOR_3DFACE+1);
                WndClassEx.hIconSm         = LoadIcon(hInstance,MAKEINTRESOURCE(IDI_ICON2));
    
                RegisterClassEx(&WndClassEx);
    

    --> LRESULT CALLBACK WndProc (...

    hChild2 = CreateWindow( szChild, "test",
                                    WS_CHILD | WS_CLIPCHILDREN | WS_VSCROLL | WS_HSCROLL,
                                    CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT,
                                    hwnd, 0, hInstance, NULL);
                ShowWindow(hChild2, SW_SHOW);
    

    LRESULT CALLBACK MDIChildWndProc(HWN...

    LRESULT CALLBACK MDIChildWndProc(HWND hwnd, UINT Message, WPARAM wParam, LPARAM lParam)
    {
        switch(Message)
        {
            case WM_CREATE:
                {
    
                hButton1 = CreateWindow(  "button","Beenden",
                                    WS_CHILD | WS_VISIBLE |BS_PUSHBUTTON,
                                    30, 330, 100, 30,
                                    hChild2, (HMENU)400, hInstance, NULL);
    
                hStatic = CreateWindow(  "Static","neue Fläche", WS_CHILD |WS_GROUP, 
                                    10+1, 10+25, 450-3, 300-27, 
                                    hChild2, NULL, hInstance, NULL);
                hButton2 = CreateWindow(  "button","starten",
                                    WS_CHILD | WS_VISIBLE |BS_PUSHBUTTON,
                                    30, 330, 100, 30,
                                    hStatic, (HMENU)410, hInstance, NULL);
                ShowWindow(hStatic, SW_SHOW);
    
                }
                break;   
            case WM_COMMAND:
                switch(LOWORD(wParam))
                {
                    case 400:
                       DestroyWindow(hwndMainWindow);  
                    return (TRUE);
                    case 410:
                       // starte hier
                    return (TRUE);
    
                 }
                 return 0;
        }
        return DefMDIChildProc(hwnd, Message, wParam, lParam);
    }
    

    ich hoffe, dass ich mein problem halbwegs gut schildern konnte, ist nicht so einfach.

    vielen dank für eure anregungen
    slower



  • warum erstellst du die button denn auf dem static?



  • und hier ne hilfe: http://www.winapi.net/index.php?inhalt=s27

    wäre dann im endeffekt aber einfacher den button direkt auf hChild2 zu erstellen 😃



  • wenn ich auf dem static 20 button bzw. checkboxen habe, kann ich mit

    ShowWindows(hStatic, SW_HIDE);

    alle mit einem mal ausblenden und muß nicht 20 einzelne SW_HIDE's senden.



  • danke dir, genau das hab ich gesucht.
    geht prima damit


Anmelden zum Antworten