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

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

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  redflr님께 메시지 보내기redflr님을 내 주소록에 추가합니다.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  kirs6님께 메시지 보내기kirs6님을 내 주소록에 추가합니다.kirs6님의 개인게시판 가기 번호: 98123  


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

수고하세요..^^

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

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

이 글에 답변 등록하기
                         [답변]흠..이거해보세요 2008-09-29 오후 8:23:42
 kirs6  kirs6님께 메시지 보내기kirs6님을 내 주소록에 추가합니다.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  kpoto님께 메시지 보내기kpoto님을 내 주소록에 추가합니다.kpoto님의 개인게시판 가기 번호: 98144  

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

 

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

 

 

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

 

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

 

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

 

 

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

 

 

그럼 수고하세요.

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

여러 방법이 있네요^^~

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

 

 

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

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

^^~

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