如何发送和捕获消息

jiaowei051 2010-09-28 05:19:28
自定义控件继承自RichTextBox
在该控件中录入一个字符的时候,例如字符‘a’,我现在可以把这个消息截获,现在我想把这个字符替换成字符串,如‘录入了字符a’,最后在该控件显示为‘录入了字符a’,怎么实现啊?

protected override void DefWndProc(ref Message m)
{
switch((UInt32)m.Msg)
{
case WM_CHAR:
case WM_SYSCHAR:
int a=int)int)m.WParam;
if(a==0x61)
{
//在此如何实现啊?
m.Result=(IntPtr)1;
}
default:
m.Result=(IntPtr)1;
break;
}
}
...全文
134 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
fangxiaofelix 2010-09-29
  • 打赏
  • 举报
回复
看楼主这么饥渴,也帮你顶了!
jiaowei051 2010-09-29
  • 打赏
  • 举报
回复
不要沉了,自己顶啊
jiaowei051 2010-09-29
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 ku3gitxdx 的回复:]
C# code

public class NewRich : System.Windows.Forms.RichTextBox
{
const UInt32 WM_CHAR = 0x0102;
const UInt32 WM_SYSCHAR = 0x0106;
protected override void DefWndProc……
[/Quote]
你这个是把所有的Text内容都被置换掉了,我要求的功能是在其插入的位置,其他内容不被替换掉。兄弟们继续啊,现在不忙结贴。
指尖魔术师 2010-09-28
  • 打赏
  • 举报
回复

public class NewRich : System.Windows.Forms.RichTextBox
{
const UInt32 WM_CHAR = 0x0102;
const UInt32 WM_SYSCHAR = 0x0106;
protected override void DefWndProc(ref System.Windows.Forms.Message m)
{
switch (UInt32.Parse(m.Msg.ToString()))
{
case WM_CHAR:
case WM_SYSCHAR:
int nParam = (int)m.WParam;
this.Text = "您录入了:" + ((char)nParam).ToString();
m.Result = (IntPtr)1;
break;
default:
m.Result = (IntPtr)1;
break;
}
base.DefWndProc(ref m);
}
}
jiaowei051 2010-09-28
  • 打赏
  • 举报
回复
高手们继续啊!!
jiaowei051 2010-09-28
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 kisalove 的回复:]
用hook
[/Quote]
兄弟还能给的详细滴啊,我现在受困的是如何发字符串信息到该控件,然后在原来录入的位置上正确显示
萬空 2010-09-28
  • 打赏
  • 举报
回复
用hook
kj289907795 2010-09-28
  • 打赏
  • 举报
回复
...这么复杂啊
jiaowei051 2010-09-28
  • 打赏
  • 举报
回复
要处理的消息太多了,这个是被我提炼出来的
SadEmprie 2010-09-28
  • 打赏
  • 举报
回复
为什么不用控件的OnKeyDown事件?

110,538

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧