C++Builder Programming Forum
C++Builder  |  Delphi  |  FireMonkey  |  C/C++  |  Free Pascal  |  Firebird
볼랜드포럼 BorlandForum
 경고! 게시물 작성자의 사전 허락없는 메일주소 추출행위 절대 금지
C++빌더 포럼
Q & A
FAQ
팁&트릭
강좌/문서
자료실
컴포넌트/라이브러리
메신저 프로젝트
볼랜드포럼 홈
헤드라인 뉴스
IT 뉴스
공지사항
자유게시판
해피 브레이크
공동 프로젝트
구인/구직
회원 장터
건의사항
운영진 게시판
회원 메뉴
북마크
볼랜드포럼 광고 모집

C++빌더 Q&A
C++Builder Programming Q&A
[11555] Re:CM_MOUSEENTER는 계속 발생하는게 아닌가요?
SteelHeart [] 883 읽음    2001-10-05 21:49
김정훈 님이 쓰신 글 :
: FAQ에서 보고 CM_MOUSEENTER를 받는 함수를
: 만들었습니다.
:
:
:  MESSAGE void TForm1::OnMouseEnter(TMessage &msg)
: {
:     POINT lpPoint;
:     GetCursorPos(&lpPoint);
:     Image2->Left = lpPoint.x - Form1->Left;
:     Image2->Top = lpPoint.y - Form1->Top;
:     Label3->Caption = lpPoint.x - Form1->Left;
:     Label4->Caption = lpPoint.y - Form1->Top;
:     Image2->Picture=NULL;
: }
: 마우스가 폼안에 있으면 그림이 마우스를 따라다니면서
: 마우스 좌표가 표시되는건데.
:
: 이게 실시간으로 표시가 되는게 아니라
: 뚝뚝 끊기거나 화면 밖으로 나갔다가 들어와야 되네요;
:
: 그 OnPaint로 계속 안뿌려져서 그런가요?;;
: 저게 MouseMove에 쓸때는 정상적으로 됐거든요?
: 근데 저기에선 안되네요
:
: 어떻게 해야될까요?

OnPaint 문제가 아니라

OnEnter 는 마우스가 컨트롤 안에 들어오는 때 한번만 발생합니다.

그래서 컨트롤(폼)을 나갔다 들어오거나 일정 시간이 지나야 다시 발생하는 것이지요

여러가지 생각해 봤는데요

아무래도 OnMouseMove 에서 캐치하는 게 제일 나을 듯 싶습니다.

아니면 마우스가 컨트롤 바깥으로 나가는 메세지도 캐치한 다음

bool isEnter; 로 선언하셔서 들어올 경우에만

OnMouseMove 에서 처리 해 주는 게 좋겠지요

아 그리고 이미지를 따라 다니게 하는 것이라면

아무스 위치에 따라 이미지 출현 위치를 잘 생각해야 겠죠? ^-^

폼 끝부분에 도달해서 이미지가 폼의 크기제한에 짤리는 경우가 있으면 안되니깐요.

대략 다음과 같은 방법으로 표시하시면 됩니다.

int MX,MY; // 마우스 좌표
TImage *Img;
...
// 이미지 출현 위치 계산 부분
if(Form->Left + Form->Width - Img->Width < MX)
{
  Img->Left = MX - Form->Left - Img->Width;
}
else Img->Left = MX - Form->Left;

....

뭐 대충 이런 식이 되겠네요.

그럼 즐프하세요~

+ -

관련 글 리스트
11550 CM_MOUSEENTER는 계속 발생하는게 아닌가요? 김정훈 1116 2001/10/05
11555     Re:CM_MOUSEENTER는 계속 발생하는게 아닌가요? SteelHeart 883 2001/10/05
11557         re:onmousemove는 쓸수가 없어요ㅠ.ㅠ; 김정훈 822 2001/10/05
11562             Re:re:onmousemove는 쓸수가 없어요ㅠ.ㅠ; SteelHeart 999 2001/10/06
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.