|
여기서 자료 잘 찾으면 상당히 많은 정보를 얻을수 있어요
GetCursorPos 와 ScreenToClient 함수를 이용해서..
Control에 대한 마우스 커서의 상대적인 위치를 알수잇어요
---------------샘플---------------------------------
void __fastcall TForm1::Timer1Timer(TObject *Sender)
{
TPoint pt;
GetCursorPos(&pt);
pt=Image1->ScreenToClient(pt);
if(pt.x>=Image1->Left && pt.x<=(Image1->Left+Image1->Width))
{
if(pt.y>=Image1->Top && pt.y<=(Image1->Top+Image1->Height))
{
ShowMessage("Image1 위에 마우스가 있음!");
}
}
}
//---------------------------------------------------------------------------
허접 님이 쓰신 글 :
: 장성호님.. 답변 감사드립니다.
: 그런데, 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문이 돌아서 그런지.. 그냥 마지막에 보여져야 할 부분으로 이미지가 이동해 버립니다.
: : : 무슨 방법 없을까요?
: : : 도와주세요~ ㅠ.ㅜ
|