통합검색
· 마을서비스란?  · 포럼마을  · 일반마을  · 테마마을  · 마을랭킹  · 활동왕
· 덱스퍼트란?  · TECBOX   · PRSBOX   · 이용안내  
· DEXT제품군  · 솔루션베이  · S/W & ESD 컴포넌트
· 프로그램베이 
· LiveSeminar  · LiveConference
데브피아 C# 포럼 마을에 오신 것을 환영합니다.
  마을등급 C#   이 마을은 포럼마을 입니다이 마을은 자유가입제 마을 입니다 마을소개 페이지로 이동 전입신청
마을촌장촌장 남정현 주민 12242 since 2006-12-28
우리마을 공지사항
질문&답변
강좌&팁
자유게시판
자료실
앨범
개인게시판
[마을 게시판]
구인/구직 게시판
건의 / 운영 제안
랑데브 게시판
칼럼 게시판
개발자 고충상담
Dev Talk
자유토론방
벼룩시장
재나미 우스개
구인/프로젝트 정보
사람인 채용 게시판
  고객지원 게시판
마이 데브피아
 나의 e-Money 내역
 활동왕 My Page
 스크랩한 게시글보기
 쪽지관리
 주소록관리
 일정관리

 질문&답변
 윈도우 폼에서 마우스 좌표 알아내기~  | WinForm Program 2008-09-29 오후 3:30:30
김기호 (man1004me)  김기호님께 메시지 보내기김기호님을 내 주소록에 추가합니다.김기호님의 개인게시판 가기 번호: 98096  / 읽음:171

Point aa = this.PointToScreen(new Point(e.X, e.Y));
 this.Text = aa.X + "," + aa.Y;

 

윈도우 폼에서 마우스를 움직이면 좌표가 잘 움직이는데 버튼이나 레이블 픽쳐박스등등에 지나가면 좌표가 멈추네요~

 

그런 것과 전혀 상관없이 창 전체에서 영향 안받고 마우스 좌표를 읽어내는 방법이 없을까요?

 

 

레이블이 있던 말던 마우스만 움직이면 x,y 축이 증가 감소 하고 싶습니다.

 

고수님들 부탁드려요~

이 글에 답변 등록하기
 [답변]이렇게 해보시는게.. 2008-09-29 오후 5:21:51
정홍영 (redflr)  정홍영님께 메시지 보내기정홍영님을 내 주소록에 추가합니다.정홍영님의 개인게시판 가기 번호: 98107  
자식 컨트롤에서의 mousemove 를 잡으시려면

자식컨트롤의 MouseMove Event를 잡으시구요

자식컨트롤에 마우스 클릭시 만 좌표를 알아와야 한다면

public const int WM_LBUTTONDOWN = 513;
public const int WM_LBUTTONUP = 514;
public const int WM_MOUSEMOVE = 512;
public const int WM_PARENTNOTIFY = 528;

protected override void WndProc(ref Message m)
{
if (m.Msg == WM_MOUSEMOVE)
{
this.Text = MousePosition.X.ToString() + " " + MousePosition.Y.ToString();
}
else if (m.Msg == WM_PARENTNOTIFY && (int)m.WParam == WM_LBUTTONDOWN)
{
this.Text = MousePosition.X.ToString() + " " + MousePosition.Y.ToString();
}
base.WndProc(ref m);
}

이렇게 한번 해보시죠
이 글에 답변 등록하기
         [답변].. 2008-09-29 오후 7:43:04
강현철 (kirs6)  강현철님께 메시지 보내기강현철님을 내 주소록에 추가합니다.강현철님의 개인게시판 가기 번호: 98123  


1. WndProc 클래스를 사용하는 방법
2. 메시지필터를 사용하는 방법
3. 전역 마우스 후킹을 사용하는 방법

수고하세요..^^

이 글에 답변 등록하기
                 [답변]답변감사드립니다~ 2008-09-29 오후 7:49:21
김기호 (man1004me)  김기호님께 메시지 보내기김기호님을 내 주소록에 추가합니다.김기호님의 개인게시판 가기 번호: 98124  

ㅎㅎ 역시 API부터 차근히 해왔는데도. 잘 응용이 안되네요. ㅎㅎ 방법론을 제시할 수 있는 경지가 될려면..아직 멀었네욤.

이 글에 답변 등록하기
                         [답변]흠..이거해보세요 2008-09-29 오후 8:23:42
강현철 (kirs6)  강현철님께 메시지 보내기강현철님을 내 주소록에 추가합니다.강현철님의 개인게시판 가기 번호: 98126  



private void button1_Click(object sender, EventArgs e)
{
MessageFilter msgFilter = new MessageFilter();
Application.AddMessageFilter(msgFilter);
}

클래스를 새로만듭니다

public class MessageFilter : IMessageFilter
{
public bool PreFilterMessage(ref Message m)
{
switch(m.Msg)
{
case 0x0200:
System.Diagnostics.Debug.WriteLine(Cursor.Position + " " + m.LParam);
return true;
}

return false;
}
}

m.LParam 에도 마우스 좌표값이 들어있습니다..
이를 포인터 x , y 값으로 보기위해선
HIWORD와 LOWORD 를 분리해줘야합니다~

시간나면 저거 분리해보세용~ ^^;

이 글에 답변 등록하기
 [답변]api 사용하지 않고 쓰는 방법 2008-09-30 오전 10:29:56
이장춘 (kpoto)  이장춘님께 메시지 보내기이장춘님을 내 주소록에 추가합니다.이장춘님의 개인게시판 가기 번호: 98144  

api를 사용하면 후킹하면 쉽긴 하지만 api를 사용하면 안될 경우도 있죠.

 

api를 사용안하고 MouseMove 이벤트를 전부 적용 하면 됩니다.

 

 

위 그림과 같은 함수를 만듭니다.

 

폼에서 Ctrl+a 를 누르면 모든 컨트롤들이 선택 됩니다. 이때 Form 선택 안되니 같이 추가로 클릭해서 추가해 줍니다.

 

그리고 속성창을 열어서 이벤트 목록중 MouseMove 이벤트에 MouseMoveEvent 함수를 추가해 주면 됩니다.

 

 

아니면 직접 아래 그림처럼 직접 이벤트를 등록해주셔두됨. ㅎㅎㅎ

 

 

그럼 수고하세요.

이 글에 답변 등록하기
         [답변]좋은 답변들 감사드립니다. 2008-09-30 오후 12:28:39
김기호 (man1004me)  김기호님께 메시지 보내기김기호님을 내 주소록에 추가합니다.김기호님의 개인게시판 가기 번호: 98153  

여러 방법이 있네요^^~

이 글에 답변 등록하기
 [답변]요렇게 하시면 모든 컨트롤에 대해서 한번에~~ 2008-09-30 오후 5:28:53
지도윤 (jido1111)  지도윤님께 메시지 보내기지도윤님을 내 주소록에 추가합니다.지도윤님의 개인게시판 가기 번호: 98186  

 

 

강좌팁에 있는 내용을 참고해서 만들어봤습니다.

이 글에 답변 등록하기
         [답변]ㅎㅎ 많은 방법들 감사합니다. 2008-09-30 오후 8:26:08
김기호 (man1004me)  김기호님께 메시지 보내기김기호님을 내 주소록에 추가합니다.김기호님의 개인게시판 가기 번호: 98212  

^^~

이 글에 답변 등록하기
목록 보기   지금 보고 계시는 글을 회원님의 my Mblog >> 스크랩에 넣어두고 다음에 바로 보실 수 있습니다.  
회사소개  |   개인정보취급방침  |  제휴문의  |   광고문의  |   E-Mail 무단수집거부  |   고객지원  |   이용안내  |   세금계산서
사업자등록번호 안내: 220-81-90008 / 통신판매업신고번호 제 2010-서울강남-00026호
서울시 강남구 논현동 87-2 미래빌딩 5층 / TEL. 02_6719_6200 / FAX. 02-6499-1910 / 대표: 홍영준
Copyright ⓒ (주) 데브피아. All rights reserved.