-
1. Data: 2009-03-02 10:44:35
Temat: Windows - Przesuwanie kontrolki po oknie czyli jak pobrac wspolrzedne obszaru klienta
Od: "Adam L." <n...@d...pl>
Witam!
Jak naprościej w Windows (WinAPI) przesunąć kontrolkę o zadane dex i dy
będącą na oknie.
Wydawało by się to proste:
- pobieram współrzędne kontrolki za pomocą GetWindowRect()
- odpowiednio poprawiam współrzędne o dx i dy
- przesuwam kontrolkę za pomocą MoveWindow() lub SetWindowPos()
gdyby nie to że ... GetWindowRect() podaje współrzędne wględem Screen a
MoveWindow() i SetWindowPos()
wymagają współrzędnych względem okna na którym jest kontrolka. Ba, gorzej,
względem _obszaru klienta_ tego okna.
Gdyby tylko względem okna to jeszcze pół biedy, pobiore współrzędne okna i
już,
ale nie znalazłem żądenej funkcji która by podawała współrzędne obszaru
klienta danego okna
(funkcja GetClientRect() zawsze zwraca x i y równe zero)
Jak to się w prosty sposób zrobić ?
Adam
-
2. Data: 2009-03-02 11:04:26
Temat: Re: Windows - Przesuwanie kontrolki po oknie czyli jak pobrac wspolrzedne obszaru klienta
Od: voy <v...@M...pl>
Adam L. pisze:
> Witam!
>
> gdyby nie to że ... GetWindowRect() podaje współrzędne wględem Screen a
> MoveWindow() i SetWindowPos()
> wymagają współrzędnych względem okna na którym jest kontrolka. Ba, gorzej,
> względem _obszaru klienta_ tego okna.
> Gdyby tylko względem okna to jeszcze pół biedy, pobiore współrzędne okna i
> już,
> ale nie znalazłem żądenej funkcji która by podawała współrzędne obszaru
> klienta danego okna
> (funkcja GetClientRect() zawsze zwraca x i y równe zero)
>
> Jak to się w prosty sposób zrobić ?
>
> Adam
>
ScreenToClient
ClientToScreen
Pozdr :)
-
3. Data: 2009-03-02 11:20:38
Temat: Re: Windows - Przesuwanie kontrolki po oknie czyli jak pobrac wspolrzedne obszaru klienta
Od: "Adam L." <n...@d...pl>
Użytkownik "voy" <v...@M...pl> napisał w wiadomości
news:gogeg7$oio$1@inews.gazeta.pl...
> Adam L. pisze:
> > Witam!
> >
> > gdyby nie to że ... GetWindowRect() podaje współrzędne wględem Screen a
> > MoveWindow() i SetWindowPos()
> > wymagają współrzędnych względem okna na którym jest kontrolka. Ba,
gorzej,
> > względem _obszaru klienta_ tego okna.
> > Gdyby tylko względem okna to jeszcze pół biedy, pobiore współrzędne okna
i
> > już,
> > ale nie znalazłem żądenej funkcji która by podawała współrzędne obszaru
> > klienta danego okna
> > (funkcja GetClientRect() zawsze zwraca x i y równe zero)
> >
> > Jak to się w prosty sposób zrobić ?
> >
> > Adam
> >
>
> ScreenToClient
>
> ClientToScreen
>
Wielkie dzięki !!
Długo szukałem po helpie WinAPI a nie natrafiłem na te funkcje.
Pozdrawiam
Adam