.NET CF에서 WndProc 사용법
.NET 기반에서 C#으로 윈도우메세지를 핸들링하기 위해서는 WndProc를 오버라이드하여 사용하는 것으로 많이 알려져 있습니다. 하지만 .Net CF 에서는 Form클래스에 WndProc메소드가 기본적으로 존재하지 않습니다. 대신에 MessageWindow클래스를 이용하여 WndProc를 오버라이드하면 윈도우 메세지를 핸들링할 수 있도록 지원해줍니다.
그럼, 간단하게 폼 위에서 마우스가 이동하면, 이때 마우스 좌표값을 윈도우 메세지 형태로 날려서
이 값을 Form의 Text속성에 표시하는 예제를 함께 구현해 보도록 하지요.
우선 MessageWindow 클래스 사용을 위해서는 다음과 같이 참조추가를 해주어야 합니다.
사용하기 원하는 코드에서
using Microsoft.WindowsCE.Forms;
이제 MessageWindow를 사용할 수 있게 됩니다.
아래는 기본적으로 프로젝트 생성시에 생성되는 폼(frmMain)에서
MessageWindow를 상속받아 WndProc를 오버라이드한 클래스를 이용하는 코드입니다.
굵은 부분을 참고하면 어떤식으로 윈도우메세지를 핸들링하는지 흐름을 파악할 수 있을 겁니다.
frmMain 코드 - 프로젝트 생성시 생성되는 기본 폼 |
public partial class frmMain : Form
public frmMain() this.MsgWin = new MsgWindow(this);
//마우스 이동시에 메세지를 생성하여 날려주는 작업을 해주겠습니다. protected override void OnMouseMove(MouseEventArgs e) (IntPtr)e.X, (IntPtr)e.Y);
//MsgWin을 통해 현재 폼에 접근할 수 있도록 메소드를 하나 정의합니다. public void RespondToMessage(int x, int y)
|
MesssageWindow를 상속받아 WndProc를 오버라이드 |
public class MsgWindow : MessageWindow private frmMain msgform;
public MsgWindow(frmMain msgform)
protected override void WndProc(ref Message msg)
|
[출처] 〃C#, .NET CF에서 WndProc 사용법|작성자 Chuls
'Programming > C#' 카테고리의 다른 글
파일 드래그&드롭 (1) | 2010.06.30 |
---|---|
Form-Form 데이터 전달 (0) | 2010.06.29 |
C# 주의해야 할 문법(dispose,using,close) (2) | 2010.06.28 |
Handling Application Events: On Idle (0) | 2010.06.28 |
GDI+ 객체로 그리기할 때 화면 깜박임 줄이기 - 더블 버퍼링 (3) | 2010.06.25 |