none
c#中,在不确定窗体层级的情况下,如何响应WM_COMMAND消息 RRS feed

  • 问题

  • 一个控件可以将WM_Command消息发给他的父窗体,当我想在该控件的父窗体的上层窗体(层数是不确定的)接收该消息时,应如何做呢?
    2013年6月17日 9:05

全部回复

  • Hi 水光,

    能说说你的需求是什么吗?谢谢。


    Bob Shen
    MSDN Community Support | Feedback to us
    Develop and promote your apps in Windows Store
    Please remember to mark the replies as answers if they help and unmark them if they provide no help.

    2013年6月19日 6:12
    版主
  • hi,

    你可以记下每个父窗体的Handle


    秘訣無它,唯勤而已 http://www.dotblogs.com.tw/yc421206/

    2013年6月19日 11:30
  • 水光:

    想确认一下——你“不确定的上层窗体”具体是指代啥?是不是说最上层的那个窗体?


    If you think one reply solves your problem, please mark it as An Answer, if you think someone's reply helps you, please mark it as a Proposed Answer

    Help by clicking:
    Click here to donate your rice to the poor
    Click to Donate
    Click to feed Dogs & Cats


    Found any spamming-senders? Please report at: Spam Report

    2013年6月20日 5:04
    版主
  • 我想做一个全局使用的剪切、复制、粘贴、撤销、重做的功能模块,如果可以在主窗体中截获WM_Command消息,就可以设置剪切、复制等按钮或菜单的Enable。

    我的困惑是:如果将一个TextBox放入主窗体,可以收到消息,但将其放入一个Panel中时,收到消息的是Panel,主窗体收不到消息。

    代码:

    const int WM_COMMAND = 0x0111;
    const int EN_CHANGE = 0x0300 << 16;
    const int EN_UPDATE = 0x0400 << 16;
    protected override void WndProc(ref Message m)
    {
        if (m.Msg == WM_COMMAND)
        {

            int mWparam = (int)m.WParam  & (0xFFFF << 16);

            if (mWparam == EN_UPDATE)
            {
                System.Windows.Forms.MessageBox.Show("编辑框将要改变:" );
            }
             if (mWparam == EN_CHANGE)
             {
                 System.Windows.Forms.MessageBox.Show("编辑框已改变:" );
             }
        }
        base.WndProc(ref m);
    }

    2013年6月21日 3:20