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
[47159] Re:Re:고수님들~ 도와주세요~~
허접 [khlee0123] 1544 읽음    2006-11-21 11:57
장성호님..  감사합니다..
*^^*

저에게 결정적인 힌트를 주셨네요.
고수님들이 생각하시기엔 참으로 간단하고 쉬운 문제였겠지만, 저로서는 힘든 문제였습니다.

if (bData[0] == -82)
{
    mouse_event(MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0);  //마우스 LeftButton Down이벤트를 발생시킴
    mouse_event(MOUSEEVENTF_LEFTUP, 0,0, 0, 0);    
}

이 다섯줄로, 마우스랑 동일한 기능을 하네요.
쩝~

그럼, 드래그 기능이나, 그런 기능들도 마찬가진가요?
드래그는 안되던데..  아님 또 다른 어떤???


  

장성호 님이 쓰신 글 :
: BackCloseImageClick 등과 같은 함수는
: 이벤트 핸들러로..  Event가 발생했을때.. 실행하는 함수입니다.
:
: 어떤 이벤트가 발생했을때 대충 아래와 같은 순서로 (맞나?)  처리됩니다.
:
: 1. 마우스 이벤트 발생
: 2. 윈도우 메세지 큐에 마우스이벤트 메세지 저장
: 3. Application에서 GetMessage 로   윈도우 메세지 큐에서 메세지 가져옴
: 4. 이벤트 핸들러가 있으면 해당함수 호출(예 -BackCloseImageClick )
:
: 그러므로 이벤트 핸들러(BackCloseImageClick ) 를 백번천번 호출해도 실제 마우스 event가 발생하지는 않죠
:
: 님께서 원하시는 기능은 아래 함수들로 구현할수 있을것입니다.
:
:
: POINT pos;
: GetCursorPos( &pos );  //현재 마우스 좌표를 가져옴
: SetCursorPos( pos.x, pos.y ); //마우스 위치를 ( pos.x , pos.y ) 옮겨줌
:
: mouse_event(MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0);  //마우스 LeftButton Down이벤트를 발생시킴
: mouse_event(MOUSEEVENTF_LEFTUP, 0,0, 0, 0);         //마우스 LeftButton Up이벤트를 발생시킴
: //--------------------------------------------------------------------------------------
: mouse_event(***) 함수를 이용하면 실제 mouse이벤트가 발생한것처럼 동작합니다.
:
: 원격제어 프로그램이나...
: 또는 게임아이템 자동으로 획득하는 프로그램들.. 등이
: mouse_event  함수를  핵심적으로 이용해서 만듭니다.
:
: if (bData[0] == -82)
: {
:     TPoint pt;
:     pt.x=0;
:     pt.y=0;
:     pt=BackCloseImage->ClientToScreen(pt);// ScreenToClient()
:     pt.x+=10;
:     pt.y+=10;
:     SetCursorPos( pt.x, pt.y ); //마우스 위치를 ( pos.x , pos.y ) 옮겨줌
:      mouse_event(MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0);  //마우스 LeftButton Down이벤트를 발생시킴
:      mouse_event(MOUSEEVENTF_LEFTUP, 0,0, 0, 0);    
: }
: 뭐 대충 위와 같은식으로 하면
: BackCloseImage 위  (10,10) 에서 mouse Click이벤트가 발생한것처럼 동작하지요
:
: 그럼...
:
:
:
: 허접 님이 쓰신 글 :
: : 안녕하세요.
: : 몇일째 하나의 문제로 끙끙 앓고 있습니다.  ㅠ.ㅜ
: : 마우스가 아닌 걸로 마우스 기능을 구현하려고 하고 있는데요.
: : 돔 스위치라고 아시나요?
: : 현재 RS232 통신을 이용해서 MICOM으로부터 데이터를 받아 오고 있습니다. (UART 통신으로)
: : MICOM에서 수신 되는 데이터는 delta-x, delta-y 라는 데이터 인데, 이 데이터를 받아 마우스 커서를 움직이는 것과 동일한 기능을 하는 프로그램 입니다.  (마우스가 아닙니다)
: : 그런데 문제는 돔 스위치라는 것을 눌렀을 때 0xAE (- 82) 라는 데이터가 나옵니다.
: : 이 0xAE, 즉 -82라는 데이터가 나오면, 마우스 왼쪽 버튼을 클릭한 것과 동일한 기능을 수행하도록 하고 싶은거죠.
: : Main Form Event 중에 OnClick 하고 연결을 해보면 되지 않을까 싶었는데 잘 안되네요..
: : 어찌해야 되는지.....    뭘 잘못한건지..  모르겠네요..
: : 급한 마음에 cpp 파일을 첨부해서 올립니다.
: : 시간 좀 내셔서 불쌍한 중생 좀 살려 주세요..   ㅠ.ㅜ
: : 부탁 드립니다.
: : 참고로, 소스에 462번째 라인을 보시면
: : if (bData[0] == -82)
: :     {
: :         BackCloseImageClick(FormMain);
: :         count++;
: :         //Edit3->Text = count;
: :     }
: : 이렇게 되어 있는데, -82 라는 값이 나오면 BackCloseImageClick(FormMain) 을 해줍니다.
: : 처음에 만들때는 이런식으로 얼렁뚱땅 넘겼는데, 마우스도 아닌것을 마우스랑 동일한 기능을 하려니, 아직 초보인 저의 실력으로는 감당하기 벅차네요.  ㅠ.ㅜ
: :
: : 이상입니다.

+ -

관련 글 리스트
47156 고수님들~ 도와주세요~~ 허접 1157 2006/11/20
47157     Re:고수님들~ 도와주세요~~ 장성호 1485 2006/11/21
47159         Re:Re:고수님들~ 도와주세요~~ 허접 1544 2006/11/21
47162             Re:Re:Re:고수님들~ 도와주세요~~ 열씸! 1539 2006/11/21
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.