Duckling Napisano Lipiec 12, 2018 Autor Zgłoś Udostępnij Napisano Lipiec 12, 2018 WM_CLOSE wysyla WM_DESTROY jesli masz w WM_DESTROY wpisane PostQuitMessage (0) ; to nic dziwnego ze zamyka caly program trzeba sprawdzic od ktorego okna ten WM_DESTROY i jesli od glownego to wyslac PostQuitMessage (0) jesli nie to nie wysylac Cytuj Link do komentarza Udostępnij na innych stronach More sharing options...
Aspect Napisano Lipiec 12, 2018 Zgłoś Udostępnij Napisano Lipiec 12, 2018 Trudno się dziwić, ze funkcje ShowWindow(hWindow,SW_HIDE); i SendMessage(hWindow,WM_CLOSE,0,0); ukrywają lub zamykają Ci okno aplikacji bo... właśnie do niego wysyłasz te komunikaty. Podajesz do nich, jako pierwszy parametr, uchwyt do głównego okna aplikacji, a musisz tam zamiast tego podać uchwyt do swojego edita lub buttona. Zeby uzyskac ten uchwytm masz 2 sposoby: 1. Jezeli tworzyles button lub edit funkcją CreateWindow(); lub CreateWindowEx(); to zwracaja one uchwyty do okna, które stworzą, więc możesz sobie zrobić globalną zmienną typu HWND i w niej przechowywac uchwyt. 2. Jezeli tworzyles DialogBox korzystając z szablonu w pliku zasobów (.rc), a takze w każdym przypadku kiedy znasz identyfikator kontrolki którą chcesz usunąć, możesz posłużyć się funkcją GetDlgItem();, która również zwraca uchwyt do okna kontrolki. Jako pierwszy parametr podajesz jej uchwyt do rodzica kontrolki, a jako drugi jej identyfikator. Cytuj Link do komentarza Udostępnij na innych stronach More sharing options...
Enigma Napisano Lipiec 12, 2018 Zgłoś Udostępnij Napisano Lipiec 12, 2018 Eee, może jestem jakiś "niemyślący" :P, ale: 1. Nie wiem dokładnie o co ci chodzi 2. hKontrolki=GetDlgItem(hRodzica, identyfikator); Jakiego typu ma być hKontrolki? Cytuj Link do komentarza Udostępnij na innych stronach More sharing options...
Aspect Napisano Lipiec 12, 2018 Zgłoś Udostępnij Napisano Lipiec 12, 2018 Ad 2. Zarówno hKontrolki, jak i hRodzica muszą być typu HWND. Właśnie to hKontrolki wstawiasz jako pierwszy parametr do funkcji ShowWindow(); i SendMessage();. Ad 1. Chodziło mi o to, że te dwie funkcje również zwracają "hKontrolki" (czyli uchwyt do jej okna).( :-) Pewnie Ci za wiele nie wyjaśniłem, ale jakoś jaśniej nie potrafię - za bardzo jestrem niewyspany.) Cytuj Link do komentarza Udostępnij na innych stronach More sharing options...
Enigma Napisano Lipiec 13, 2018 Zgłoś Udostępnij Napisano Lipiec 13, 2018 No, więc robie: h103=GetDlgItem(hwnd, 103); i SendMessage(h103, WM_CLOSE, 0, 0) ; i nic. Dlaczego? Cytuj Link do komentarza Udostępnij na innych stronach More sharing options...
Jarema Napisano Lipiec 13, 2018 Zgłoś Udostępnij Napisano Lipiec 13, 2018 A gdybyś spróbował w inny sposób. Użyj tak funkcji DestroyWindow: h103=GetDlgItem(hwnd, 103); i DestroyWindow(h103); Powinno zadziałać. Cytuj Link do komentarza Udostępnij na innych stronach More sharing options...
Enigma Napisano Lipiec 13, 2018 Zgłoś Udostępnij Napisano Lipiec 13, 2018 Nie działa ;( Cytuj Link do komentarza Udostępnij na innych stronach More sharing options...
Nemo Napisano Lipiec 13, 2018 Zgłoś Udostępnij Napisano Lipiec 13, 2018 nie wiem co ty kobinujesz czlowieku ale ja wyslalem do Buttona komunikat WM_CLOSE i bez problemu go zamknol. Aha. Napisz czy chchesz zamknac tego edita w okienku dialogowym czy nie ( w sumie chyba nie gra roznicy :? ) Cytuj Link do komentarza Udostępnij na innych stronach More sharing options...
Jarema Napisano Lipiec 14, 2018 Zgłoś Udostępnij Napisano Lipiec 14, 2018 Ja sam nie próbowałem (lenistwo ) ale to co mówi Piasiu ma sens. Windows sam odpowiednio obsługuje komunikaty wysyłane do kontrolek i WM_CLOSE wysłany do kontrolki powinien działać. Ewentualnie spróbuj subclassingu kontrolki (tutorial na stronce), przechwyć komunikat WM_DESTROY i sam wyślij jej PostQuitMessage(0). Spróbuj tak, a jak nie podziała, to mnie się kończą pomysły. Powodzenia :) Cytuj Link do komentarza Udostępnij na innych stronach More sharing options...
Aspect Napisano Lipiec 14, 2018 Zgłoś Udostępnij Napisano Lipiec 14, 2018 Ja tez sprawdzalem i na 100% dziala ! Zarowno WM_CLOSE, jak i DestroyWindow. Mysle, ze nie nalezy tego dodatkowo komplikowac subclassingiem, bo te metody na pewno sa dobrze. Problem musi lezec w innym miejscu. Wklej odrobine swojego kodu to zobaczymy na czym polega błąd. Cytuj Link do komentarza Udostępnij na innych stronach More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.