|
장성호님.. 답변 감사드립니다.
그런데, getcursorpos를 이용해서 커서 좌표 알아내고 해봤는데, 잘 안되네요. ㅠ.ㅜ
기존 소스에서는 어떻게 방법이 없는건가요??
장성호 님이 쓰신 글 :
: [기본원리]
: Timer를 이용하세요
: Timer로 원하는 시간 간격으로 ( 100ms ........) Mouse의 Position을 체크해서
: Image12위에있으며... 내려주고
: Image13위에 있으면 올려주고 그러면 되겠네요
:
: 그다음
: [추가 고려사항]
: Timer 이벤트는 시간 설정해 놓은 만큼 주기적으로 뜨는것은 아실테고
: OnTimer 이벤트에서 MouseCursor가 어떻게 Image위에 있는지 아느냐가 문제겠죠?
:
: 1) GetCursorPos 를 이용
: 이것은 GetCursorPos 라는 함수로 알수 있습니다.
: 이 함수로 알수 있는 좌표는 Screen절대좌표이기때문에...
: Image의 상대좌표로 봐꿔 줘야 겠죠
: 그런다음 Image 위치와 크기를알고 있으므로 .. Mouse가 Image위이엤는지 없는지 알수 있겠죠?
:
: 2) 뭐 구현해 보지는 않았는데...
: Button같은 경우 OnEnter 이벤트와 OnExit 이벤트가 있습니다.
: 커서가 Enter된후 Exit가 일어나기 전까지는 Button위에 있다고 볼수잇겠죠?
: Image12 ,Image13 대신 Image를 넣을수 있는 BitBtn같은것으로 바꿔서 해보는것도 대안이 될수 있을것 같구요
: 또는 Image12 ,Image13 를 서브클래싱해서 Enter Exit 를 잡는방법도 있을것 같습니다.
:
:
:
:
:
: 허접 님이 쓰신 글 :
: : 안녕하세요.
: : 허접입니다.
: : 왜이렇게 모르는게 많고 막히는게 많을까요. ㅠ.ㅜ
: : 죽고싶네요. ㅠ.ㅜ
: :
: : 소스좀 봐주세요~
: :
: : void __fastcall TForm1::Image12MouseMove(TObject *Sender,
: : TShiftState Shift, int X, int Y)
: : {
: : if (Image11->Top == 0)
: : {
: : }
: :
: : else Image11->Top += 10;
: :
: : }
: : //---------------------------------------------------------------------------
: :
: : void __fastcall TForm1::Image13MouseMove(TObject *Sender,
: : TShiftState Shift, int X, int Y)
: : {
: : if (Image11->Top == -220)
: : {
: : }
: : else Image11->Top -= 10;
: : }
: :
: : 현재 위와 같은 소스로 image12에 마우스 커서를 갖다대고 움직이면 이미지가 10씩 위로 올라가고,
: : image13에 마우스 커서를 갖다대고 움직이면 이미지가 10씩 아래로 내려갑니다.
: : 근데, 문제는....
: : 해당 위치 (image12, image13) 위에서 마우스 커서를 움직여야만 그림이 위/아래로 10씩 움직인다는거죠.
: : 해당 위치에 마우스 커서만 갖다 놓아도 그림이 위/아래로 10씩 움직이게 하고 싶거든요.
: : for 문을 돌려서 해봤더니, 너무 빨리 for문이 돌아서 그런지.. 그냥 마지막에 보여져야 할 부분으로 이미지가 이동해 버립니다.
: : 무슨 방법 없을까요?
: : 도와주세요~ ㅠ.ㅜ
|