obsługa myszy w Windows Form Application

0

Zrobiłem coś takiego: wczytałem bitmapę jako tło aplikacji i ustawiłem właściwość "FormBorderStyle" na "None". Straciłem więc możliwość przesuwania okna po pulpicie za pomocą myszy. Prośba jest taka czy ktoś w jaki sposób obsłużyć myszkę abym mógł ponownie przesuwać okno. Szukałem w necie coś na ten temat i znalazłem tylko tyle, że to co znalazłem jest zrobione w C#, a ja chciałbym to zrobić w C++. Tylko nie mam pojęcia jak, próbowałem dostosować kod z C# na C++ ale nic z tego nie wyszło. Jakby koś mógł to niech rzuci na forum kawałek kodu, albo nakieruje, jak to zrobić. Z góry dziękuję.

0

Może hook? albo dowolny komponent który będzie można złapać i przesunąć nim okno. W końcu sama forma w sobie ma metody do pozycjonowania. "Jak obsłużyć myszkę" - no tak jak sobie wymyślisz.

0

może moje pytanie jest nie na miejscu albo i głupie. Ale powiedz mi to to jest ten "hook"? Jestem początkujący w programowaniu i nie bardzo wiem co to jest.

0

..... dzięki za pomoc...... ehhhhh.... myślałem, że to forum będzie pomocne, ale najwyraźniej się myliłem :(

0

Pomyślałeś może, że nie każdemu chce się odpowiadać na proste pytania, jeszcze widząc tekst "Jakby ktoś mógł to niech rzuci kawałek kodu", brzmiący w wolnym tłumaczeniu jak "odwal za mnie całą robotę"?

Sprawa jest prosta. Musisz obsłużyć odpowiedni 3 zdarzenia myszy. Na zdarzenie przyciśnięcia(MouseDown) oznaczasz sobie jakąś flagą, że okno będzie przesuwane. Na zdarzenie przesunięcia myszy(MouseMove), jeżeli flaga jest podniesiona to przesuwasz okno. Na puszczenie myszy opuszczasz flagę(MouseUp). Ta flaga to może być zwykły bool. Te zdarzenia mają dotyczyć głównej formy(albo jakiegoś komponentu, którym będziesz chciał przesuwać to okno).
Kodu Ci nie rzucę, bo nie piszę w C++/CLI. Ten język raczej nie jest zbyt popularny i nie bardzo lubiany, więc pewnie zbyt wielu kompetentnym osobom nie będzie się chciało męczyć.

//pomysł z hook'iem w tym wypadku jest bez sensu

0

Kod w MASM32, obsługujesz komunikat WM_LBUTTONDOWN wysyłany do okna.

DlgProc proc hWin:DWORD,uMsg:DWORD,wParam:DWORD,lParam:DWORD
mov	eax,uMsg
(...)
.elseif eax == WM_LBUTTONDOWN
		invoke ReleaseCapture                                 
		invoke SendMessage,hWin,WM_NCLBUTTONDOWN, HTCAPTION,0
.endif
xor	eax,eax
ret
DlgProc EndP

1 użytkowników online, w tym zalogowanych: 0, gości: 1