一个WinForm处理Message的问题,困惑!(请各位高手看看) 仅当控件承载在 Windows 窗体应用程序中或充当 ActiveX 控件时,才调用此方法。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 PreProcessMessage这个方法只有在用户按键时才会发生,其它的消息是不会调用这个方法的.你可以使用WndProc来处理其它的消息. PreProcessMessage并不是像你想象的那样是一个消息处理之前的方法.这是不对的,它只能处理用户的按键消息.DefWndProc 可以得到系统处理的消息,不可以修改消息.WndProc则可以修改传过来的消息. To cdknet(VC++.NET) MSDN我还是会看看的,但这是什么意思呢??我是在 Windows 窗体应用程序中用的亚!Tohbxtlhx(下着春雨的天) 我在这个Form上加了一个button,点击了PreProcessMessage还是没执行亚?? Tohbxtlhx(下着春雨的天)你所说的按键消息是指什么样的Message?能不能解释一下,谢谢! 那ProcessKeyPreview又是干吗的呢? 了解了,PreProcessMessageProcessKeyMessageProcessKeyEventArgs是第一次触发时使用的。而ProcessKeyPreview是后面焦点在本Form上使用的。呵呵,谢谢hbxtlhx(下着春雨的天)了! 仅当控件承载在 Windows 窗体应用程序中或充当 ActiveX 控件时,才调用此方法。比如你自己写了一个从DataGrid继承的dataGrid控件,在这个控件里写上这个方法那么系统就会调用这个方法了.比如:class MyDataGrid:DataGrid{ public const int WM_KEYDOWN = 0x100; public override bool PreProcessMessage( ref Message msg ) { Keys keyCode = (Keys)(int)msg.WParam & Keys.KeyCode; if(msg.Msg == WM_KEYDOWN && keyCode == Keys.Delete) { if(MessageBox.Show("Delete this row?", "", MessageBoxButtons.YesNo) == DialogResult.No) return true; } this.Parent.Text = msg.ToString(); return base.PreProcessMessage(ref msg); } } sql2005同时向三张表添加数据的存储过程怎么写? c# ASCII码的问题 如何让覆盖在panel1上的panel2与panel1有点边距?一指定DOCK,边距就一样了 如何比较一个点的颜色? 求c#操作ado.net数据库开发实例 一个简单的问题,来者有分!! 关于API调用的问题。具体内容见帖子。问题解决马上结帖。谢谢 如何反射同一个类中的静态方法? 在window Form中怎么取得DataGrid的指定单元的值? ADO.NET访问Access数据库怎么耗时这么长? 跪求图片格式转换问题! 在VB.NET社区挂于首页3天,连续换气4次无人能回帖的高分问题
你可以使用WndProc来处理其它的消息.
cdknet(VC++.NET) MSDN我还是会看看的,但这是什么意思呢??我是在 Windows 窗体应用程序中用的亚!To
hbxtlhx(下着春雨的天) 我在这个Form上加了一个button,点击了PreProcessMessage还是没执行亚??
hbxtlhx(下着春雨的天)
你所说的按键消息是指什么样的Message?能不能解释一下,谢谢!
PreProcessMessage
ProcessKeyMessage
ProcessKeyEventArgs
是第一次触发时使用的。而
ProcessKeyPreview是后面焦点在本Form上使用的。
呵呵,谢谢hbxtlhx(下着春雨的天)了!
比如你自己写了一个从DataGrid继承的dataGrid控件,在这个控件里写上这个方法那么系统就会调用这个方法了.比如:
class MyDataGrid:DataGrid
{
public const int WM_KEYDOWN = 0x100;
public override bool PreProcessMessage( ref Message msg )
{
Keys keyCode = (Keys)(int)msg.WParam & Keys.KeyCode;
if(msg.Msg == WM_KEYDOWN && keyCode == Keys.Delete)
{
if(MessageBox.Show("Delete this row?", "", MessageBoxButtons.YesNo) == DialogResult.No)
return true;
}
this.Parent.Text = msg.ToString();
return base.PreProcessMessage(ref msg);
}
}