|
[기본원리]
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문이 돌아서 그런지.. 그냥 마지막에 보여져야 할 부분으로 이미지가 이동해 버립니다.
: 무슨 방법 없을까요?
: 도와주세요~ ㅠ.ㅜ
|