c# 重写wndproc后form_load不执行

yangyanzhao 2017-03-28 02:58:19
private void Form1_Load(object sender, EventArgs e)
{
hwnd = this.Handle;
socketCSharp.setHwnd(hwnd);
textBox1.Text = "192.168.2.4";
textBox2.Text = "12345678感觉很干净很感慨";
}

protected override void WndProc(ref Message m)
{
switch (m.Msg)
{
case 1024:
{
string message = string.Format("{0}", m.WParam);
//data = (string)m.WParam;
textBox3.Text = message;
break;
}
default:
{
base.DefWndProc(ref m);//调用基类函数处理非自定义消息。
break;
}
}
}
...全文
547 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
yangyanzhao 2017-03-30
  • 打赏
  • 举报
回复
谢谢了 hdt 帮了我大忙的
Poopaye 2017-03-30
  • 打赏
  • 举报
回复
引用 楼主 yangyanzhao 的回复:
protected override void WndProc(ref Message m) base.DefWndProc(ref m);//调用基类函数处理非自定义消息。
这注释写的……
真相重于对错 2017-03-30
  • 打赏
  • 举报
回复
你的wndproc 不需要调用defwndproc,甚至可以说不能调用defwndproc 因为defwndproc被调用的时候必须是所有的要处理的消息都已经被处理完,才需要调用它,你直接在你的wndproc里面调用会打破消息处理的次序,所以form_load不被执行。 System.Window.Form的wndproc里面已经调用了defwndproc, 因此你的wndproc在最后只需调用base.WndProc即可
yangyanzhao 2017-03-30
  • 打赏
  • 举报
回复
好像没什么用
threenewbee 2017-03-29
  • 打赏
  • 举报
回复
base.DefWndProc(ref m); 写在switch外面
真相重于对错 2017-03-29
  • 打赏
  • 举报
回复
base.WndProc(ref m);

7,540

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 VC.NET
社区管理员
  • VC.NET社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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