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
[11561] [질문] 으흑 여러분 제발 도와주세요 ㅠ.ㅠ
김정훈 [] 792 읽음    2001-10-06 00:05
MOUSEENTER 메세지와 MOUSELEAVE 메세지를 사용해서 폼안에 들어와있나없나를
플래그로 해서 체크해두고 폼안에 들어와있는 상태이면 무조건 실행하고 싶은데요.
타이머를 쓰니 윈도우안에서 ONPAINT가 계속 동작해서 그런지 몰라도 마우스를 폼안으로
오면 타이머가 작동이 안하는군요. 타이머 말고 그냥 계속 작동하게 할 수 없나요?

혹시라도 더 좋은 답변을 얻을 수 있을까해서 자세하게 제 상황을 올리겠습니다 ㅠ.ㅠ;
일단 전 빌더로 게임 스테이지 에디터를 만드려고 합니다.
폼위에는 클라이언트영역크기의 배경그림이 덮혀져 있습니다(Timage)
라디오체크메뉴에서 적종류를 선택하면 마우스를 따라서 적그림이 움직이고
마우스를 클릭하면 스테이지위에 적(Timage생성)이 찍히는 식입니다.

처음에는 Form에서의 MouseMove에서 처리하려고 했지요.
근데 클라이언트영역전체를 배경그림(Timage)가 덮고 있어서 안되더군요.
그래서 배경그림(Timage)에 대한 MouseMove처리를 했지요.

잘되는듯 싶었으나 문제가 있더군요. 일단 마우스끝점을 적그림(Timage2)의 Top,Left가 되서
마우스를 따라다니는데.그래서 마우스가 왼쪽이나 아래로 가면 이번엔 MouseMove가
Timage2로 넘어가버리는것입니다. 이것만이라면 어떻게 참을 수 있을지 모르겠지만
몬스터를 배경에 찍다보면 배경위에 Timage 투성일텐데 이래서야 배경그림에 대한 MouseMove
처리는 불가능하다고 생각되더군요.

그래서 계속 헤메이다가 여길 찾게되어서 FAQ에 CM_MOUSEENTER와 CM_MOUSELEAVE 메세지를
받아서 쓰는 법을 알게되었습니다. 그래서 CM_MOUSEENTER일때 처리를 하려고 했더니
이게 계속 호출되는게 아니고 마우스가 밖에서 안으로 들어올때만 메세지가 들어오는거 같더군요 ㅠ.ㅠ

그래서 위에 맨위에 질문한 타이머까지 써보았지만 이건 너무 느린거 같더군요--;
(인터벌을 1로해도;)

타이머가 아닌 루프를 쓰고 싶은데 API에선 게임짤때 Idle타임을 이용하는거던가요?
(초보라 짜놓고도 잘 모르겠음-_-;)
어쨋든 어떻게든 루프로 돌렸으면 좋겠는데..아아- 무슨 해결책없을까요?

결국 이 프로그램이 뭐하는 놈이냐면 마우스로 적 찍으면 적의 좌표와 종류를
저장해주고(링크드리스트로 만들예정) 읽어들일수도있고 편집기능인데.
이것땜에 몇일 해메고 있어요ㅠ.ㅠ;
아마추어게임팀에서 프로그래머가 저뿐인데 팀원들이 재촉하진 않지만
저땜에 자꾸 미루어져서 너무 부담스럽네요.

고수님들 도움을 주세요!ㅠ.ㅠ

+ -

관련 글 리스트
11561 [질문] 으흑 여러분 제발 도와주세요 ㅠ.ㅠ 김정훈 792 2001/10/06
11567     Re:[질문] 으흑 여러분 제발 도와주세요 ㅠ.ㅠ 큐피리도 이니 1175 2001/10/06
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.