一个form上放一个textbox
用spyxx或textbox1.handle.ToInt32()得到其handle
然后发送WM_CLOSE
发现form关闭了
不明其中原因,请教各位,谢谢.

解决方案 »

  1.   

    自己调试观察一下
    可以重载以下函数:
    PreProcessMessage
    WndProc
    DefWndProc
      

  2.   

    偶只会作WEB程序,这个问题jj肯定会~
      

  3.   

    我只是想测试一下dotnet的消息机制,测试是目的,要是想关闭,自然不会用这个
      

  4.   

    消息当然可以发,TextBox也是一个Window,为什么不能发?
    Delphi或者vc,vb写的程序都可以发的
      

  5.   

    dotnet的消息机制?
    Windows的消息机制都是一样的吧,.NET只不过是给Windows API加了层包装而已吧~
      

  6.   

    delphi或者vb写的,这样发,textBox会消失,form仍然存在
      

  7.   

    549表用.net了,用delphi多好啊:)
      

  8.   

    来拜一下好强的dotnet
    orz
    //btw, orz是什么意思?
      

  9.   

    大傻在dotnet里3个角,nb  
    ht两个角,nb
      

  10.   

    549,可能(个人臆想).net下架构变了,
    TTextBox 及其父类不再处理WM_CLOSE。
    甚至消息的处理机制都变了,如,WM_CLOSE就直接传到FORM上去了。
      

  11.   

    谢谢 swayi21(微斯人)
    我也有这个想法,但只是猜测,如果在这里得不到dotnet专家的指点,只能按照1楼兄弟的办法自己调试了
      

  12.   

    549,
    引用Windows, Messages俩单元.
    SendMessage(TextBox1.Handle.ToInt32, WM_CLOSE, 0, 0);
      

  13.   

    The DestroyWindow function destroys the specified window. The function sends WM_DESTROY and WM_NCDESTROY messages to the window to deactivate it and remove the keyboard focus from it.用这个API居然可以正常销毁textBox,而且保留Form
      

  14.   

    不幸的是如果自己发这两个消息,什么反应也没有,textBox还好好的躺在那里,msdn也是骗人的吧
      

  15.   

    在MFC中,窗体上的每一个对象都可以看成是一个View,继承自CView,该类又继承自CWnd,这样所有派生自CWnd的对象都可以接受WM_MESSAGE,但在.net里面能不能接受消息我就不知道了。
      

  16.   

    .NET对API封装比较严密,而且截止到FW2.0为止少部分系统消息不支持。
    楼主那样获取到的句柄是窗体的。要实现类似delphi那样效果的需求可以尝试用委托来实现。
      

  17.   

    to 一个form上放一个textbox
    用spyxx或textbox1.handle.ToInt32()得到其handle
    然后发送WM_CLOSE
    发现form关闭了这是正常的,因为当前handle无法处理wm_close类型消息,那么会把这消息转发到它的上级,直到第一个能处理wm_close类型消息的handle。如果到了最顶头都无法处理这个类型的消息,则丢失此类型消息。
      

  18.   

    Knight94(愚翁) ( )  可否麻烦给介绍下,这类问题看什么书比较好?
      

  19.   

    to: Knight94(愚翁) The DestroyWindow function destroys the specified window. The function sends WM_DESTROY and WM_NCDESTROY messages to the window to deactivate it and remove the keyboard focus from it.用这个API居然可以正常销毁textBox,而且保留Form而自己发送这两个消息给textbox,则textbox还存在,跟什么也没发生一样,请教
      

  20.   

    to 而自己发送这两个消息给textbox,则textbox还存在,跟什么也没发生一样,请教你最好在程序中用重载defwndproc函数中进行捕获一下,看看这个函数到底发了几个消息,以及每个消息的类型是什么。
      

  21.   

    to 可否麻烦给介绍下,这类问题看什么书比较好其实在C#中很少用到这样的api,除非要做一些比较深的东西。不过对于消息机制来说,看看windows消息处理机制方面的书,或者找篇介绍文章就可以了,这东西没比较太深究,明白原理以及流程即可。
      

  22.   

    通过spyxx,看到,的确做了一些其他工作,感谢大家的参与,重点Knight94(愚翁)