单文档的没问题了。[DllImport("User32.dll", EntryPoint = "SendMessage")]
private static extern int SendMessage(int hWnd, int Msg, int wParam, ref COPYDATASTRUCT lParam);
[DllImport("User32.dll", EntryPoint = "FindWindow")]
private static extern int FindWindow(string lpClassName, string lpWindowName);private void SendMsg(string msg)
{
int WINDOW_HANDLER = FindWindow(null, @"From1");
if (WINDOW_HANDLER == 0)
{
MessageBox.Show("没有找到From1!");
}
else
{
.....
}
}但是多文档的程序,两个子窗口老是提示找不到其中一个From,请问是什么原因?
private static extern int SendMessage(int hWnd, int Msg, int wParam, ref COPYDATASTRUCT lParam);
[DllImport("User32.dll", EntryPoint = "FindWindow")]
private static extern int FindWindow(string lpClassName, string lpWindowName);private void SendMsg(string msg)
{
int WINDOW_HANDLER = FindWindow(null, @"From1");
if (WINDOW_HANDLER == 0)
{
MessageBox.Show("没有找到From1!");
}
else
{
.....
}
}但是多文档的程序,两个子窗口老是提示找不到其中一个From,请问是什么原因?
2) 要创建MDI应用程序,要把应用程序的主窗口从一个窗体改为MDI容器,只需要把窗体的IsMdiContainer属性设置为true即可。
3) 在MDI应用程序以最基本的模式显示它本身之前,还有两件事要做:a.必须告诉MDI要显示哪个窗口,调用Show()。b.要显示为子窗口的窗体构造函数应与父容器关联,方法是把它的MdiParent属性设为MDI容器的实例。this.MdiParent=parent;
子窗口的构造函数:
Public frmChild(MdiBasic.frmContainer parent) // MdiBasic.frmContainer:应用程序名.父窗体名
{InitializeComponent();
this.MdiParent=parent;//将父窗体作为子窗体的Mdiparent
}
在父容器的菜单中调用子窗体:
ws ww=new ws(this); //ws为子窗口,this:当前窗体,也就是父窗口
ww.Show();
然后通过frm_A af = new frm_A(this);
af.MdiParent = this;
af.Show();frm_B bf = new frm_B(this);
bf.MdiParent = this;
bf.Show();的方式生成两个子窗口,现在想在frm_A 和 frm_B之间SendMessage,请问如何实现,有点演示代码更好。
IntPtr iHandle;
foreach (Form form in this.MdiParent.MdiChildren) {
if (form.Text.Equals("frm_B") == true) {
iHandle = form.Handle;
}
}这样去获取句柄,可以找到