Wpf和WinForm在窗体中处理用户自定义消息的不同方式
2013-01-08 15:19
1086 查看
WPF:
在Visual的句柄创建后(如OnLoad、OnSourceInitialized代码里),使用下面方法:
方法一:
HwndSource source =PresentationSource.FromVisual(this) as HwndSource; //添加命名空间System.Windows.Interop
if(source != null) source.AddHook(WndProc);
方法二:
HwndSource source =HwndSource.FromHwnd(new WindowInteropHelper(this).Handle);
if(source != null) source.AddHook(WndProc);
注:两种方法中的this可换成Visual对象。
然后就可以HwndSourceHook委托的WndProc方法了:
private IntPtr WndProc(IntPtr hwnd,int msg,IntPtr wParam,IntPtr lParam,ref bool handled)
{
// Handle messages...
return IntPtr.Zero;
}
WinForm:
protected override void DefWndProc(ref Message m)
{
base.DefWndProc(ref m);
}
在Visual的句柄创建后(如OnLoad、OnSourceInitialized代码里),使用下面方法:
方法一:
HwndSource source =PresentationSource.FromVisual(this) as HwndSource; //添加命名空间System.Windows.Interop
if(source != null) source.AddHook(WndProc);
方法二:
HwndSource source =HwndSource.FromHwnd(new WindowInteropHelper(this).Handle);
if(source != null) source.AddHook(WndProc);
注:两种方法中的this可换成Visual对象。
然后就可以HwndSourceHook委托的WndProc方法了:
private IntPtr WndProc(IntPtr hwnd,int msg,IntPtr wParam,IntPtr lParam,ref bool handled)
{
// Handle messages...
return IntPtr.Zero;
}
WinForm:
protected override void DefWndProc(ref Message m)
{
base.DefWndProc(ref m);
}
相关文章推荐
- 在.net(C# or vb.net)中如何用户自定义消息,并在窗体中处理这些消息。
- WPF/WinForm 关于窗体大小变化的消息机制处理
- 在.net(C# or vb.net)中如何用户自定义消息,并在窗体中处理这些消息
- 用户消息处理方式
- cocos2dx EventListenerCustom类控制事件的分发 处理不同层之间的事件传递以及自定义用户数据
- 自定义处理窗体的移动消息WM_MOVE
- winForm和WPF的消息处理
- 使用UI Automation实现自动化测试--5 (Winfrom和WPF中弹出和关闭对话框的不同处理方式)
- C# 消息处理机制及自定义过滤方式
- C# 消息处理机制及自定义过滤方式
- FMX有两种消息处理的实现方式,一种是用TMessageManager来实现自定义的消息,另外一种象TEdit中的实现,直接声明消息方法(firemonkey messaging)
- C# 窗体处理自定义消息
- C# 使用重载消息处理函数的方式,实现没有标题栏的窗体的拖动。
- wpf 自定义窗体 另一种实现方式
- C# 消息处理机制及自定义过滤方式
- 使用UI Automation实现自动化测试--5 (Winfrom和WPF中弹出和关闭对话框的不同处理方式)
- java微信开发API解析(六)-综合运用(消息处理、自定义菜单响应处理、用户自动分组处理;包含源码)
- C# WinForm窗体中有控件时keyDown事件问题处理方式
- WPF调用winform(基于GDI)的控件和WPF窗体无边框的处理
- 关于不同窗体之间的控件查询 - 方式一(静态的窗体数组)