Skocz do zawartości

taki sam


Duckling

Recommended Posts

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.

Link do komentarza
Udostępnij na innych stronach

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.)

Link do komentarza
Udostępnij na innych stronach

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 :)

Link do komentarza
Udostępnij na innych stronach

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Gość
Odpowiedz...

×   Wkleiłeś zawartość bez formatowania.   Usuń formatowanie

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Utwórz nowe...