WPF프로젝트개발법을 익히는중인데 유저메세지사용법 참 난감합니다. MFC에서는 별일없던 SendMessage도 WPF에서는 생소한데 아래코드에서 해결 좀 주세요
글쓴이: 익명 사용자 / 작성시간: 금, 2012/01/06 - 11:42오후
namespace MyTest
{
public partial class MainWindow : Window, IMessageFilter
{
private IntPtr m_handle;
[DllImport("user32.dll", CharSet = CharSet.Unicode)]
public static extern IntPtr FindWindow(string className, string windowText);
[DllImport("user32.dll", CharSet = CharSet.Unicode)]
public static extern int SendMessage(int hWnd, int Msg, int wParam, int lParam);
public MainWindow()
{
InitializeComponent();
}
private void Window_Loaded(object sender, RoutedEventArgs e)
{
System.Windows.Forms.Application.AddMessageFilter(this);
}
private void Button1_Click(object sender, RoutedEventArgs e)
{
// m_handle값이 0으로 나옵니다.
m_handle = FindWindow("MainWindow", "MainWindow");
//int iResult = SendMessage(m_handle, 100, 0, 0);
}
public bool PreFilterMessage(ref Message m)
{
//메세지기본처리부(현재 구현안됨)
return false;
}
}
}Forums:

방법은 옳은것 같은데 혹시 개발환경에 문제가 있지
방법은 옳은것 같은데 혹시 개발환경에 문제가 있지 않을까요?
다시 한번 보는게 좋을것 같아요.
FindWindow 함수의 인자로 넘기는 값을 확인해 보세요
이 함수의 첫번째 인자는 윈도우클래스명, 두번째 인자는 윈도우캡션바의 타이틀명 으로써
보통 이 값을 만족하는 윈도우를 못찾으면 0을 반환합니다.
일단 윈도우클래스(첫번째인자)를 null로 주고 호출해 보세요.
그리고 MFC든 C#이든 윈도우 자신에게 메시지를 보낼 때를 위해, 윈도우핸들인자가 생략된 함수가 항상 있었던 걸로 기억합니다.
MFC : this->SendMessage(MsgCode, WParam, LParam)
c# : this.SendMessage(MsgCode, WParam, LParam)
이런식으로요, 저도 지금 기억이 가물 ㅜㅜ 별로 도움이 못된거 같네요.
새해 복 많이 받으세요~
댓글 달기