Apropo jak zmienić położenie okienka który nie ma belki??Guzer pisze:tylko nie ustawiaj na None
Program napisany z nudów
- owoc_leśny
- -
- Posty: 40
- Rejestracja: 27 sty 2007, 19:16
- Kontakt:
- owoc_leśny
- -
- Posty: 40
- Rejestracja: 27 sty 2007, 19:16
- Kontakt:
Z pamięci niewiele powiem, a jak już mówiłem nic Borlandowego nie mam u siebie, więc tylko mogę ogólną koncepcję przedstawić:
- trzeba obsługiwać zdarzenia MouseDown, MouseUp oraz MouseMove i zadeklarować jakąś zmienną typu bool, np. bool przesuwamy = false;
- w OnMouseDown ustawić sobie przesuwamy = true;
- analogicznie w OnMouseUp przesuwamy = false;
- no i teraz najważniejsze, w OnMouseMove zapamiętywać gdzieś na boku współrzędne kursora i sprawdzać o ile kursor przesunął się od ostatniego wywołania tej funkcji
- if(przesuwamy) dodać/odjąć odpowiednie wartości od właściwości okna Left i Top
- trzeba obsługiwać zdarzenia MouseDown, MouseUp oraz MouseMove i zadeklarować jakąś zmienną typu bool, np. bool przesuwamy = false;
- w OnMouseDown ustawić sobie przesuwamy = true;
- analogicznie w OnMouseUp przesuwamy = false;
- no i teraz najważniejsze, w OnMouseMove zapamiętywać gdzieś na boku współrzędne kursora i sprawdzać o ile kursor przesunął się od ostatniego wywołania tej funkcji
- if(przesuwamy) dodać/odjąć odpowiednie wartości od właściwości okna Left i Top
owoc_leśny pisze:Apropo jak zmienić położenie okienka który nie ma belki??
Panowie mili...najskuteczniejsze są rozwiązania najprostsze.owoc_leśny pisze:No oczywiście że zmieniać położenie okna za pomocą kursora myszy.
Sztuczka polega na tym, aby:
1) do okna wewnątrz którego nastąpiło kliknięcie wysłać komunikat
WM_NCLBUTTONDOWN z parametrem HTCAPTION - okno pomyśli że kliknięto
mu w górną belkę i będzie się "wlec" za myszą jak podczas normalnej zmiany pozycji
lub
2) przechwycić obsługę meldunków WM_NCHITTEST w pętli komunikatów danego
okna i gdy jako rezultat pojawi się HTCLIENT (test w obrębie okna) podstawić
wartość HTCAPTION - oznacza kliknięcie w belkę - rezultat będzie jak wyżej.
Przykłady kodu dla BCB są tu: http://cyfbar.republika.pl/form.html#form2 polecam uwadze.
pa,
N.