使用API发送消息显示窗口

问题描述:

主窗体界面下有多个功能按钮,点击功能按钮显示功能界面,主窗口隐藏,关闭功能界面后主窗口显示,这里功能界面如果是模态对话框,则很好处理,在显示功能界面前隐藏主窗口,此时显示功能界面,由于功能界面是模态框,此时主界面会阻塞,直到功能界面关闭!此时显示主窗口!如果功能界面是非模态窗体,则主窗口不会阻塞!如何解决呢?

解决方案:使用自定义消息!关闭功能界面给主窗口发送自定义消息,主窗口做显示处理即可!

第一步:定义自定义消息  public const int WM_MSG  = 0x0400 + 200;

第二步:设置主界面的窗口句柄,发送消息时需要使用

第三步:在功能界面关闭时调用PostMessage函数发送消息,SendMessage也可,不过此函数会阻塞等待返回

PostMessage(MainHandle, WM_MSG,  0, 0);

第四步:在主界面处理自定义消息

protected override void WndProc(ref Message m)
        {
            switch (m.Msg)
            {
                case WinAPI.WM_MSG:
                    this.Show();
                    break;
            }
                base.WndProc(ref m);
          
        }
 

 

 

 

你可能感兴趣的:(C#)