两个Dialog各有一个Edit,ID都是IDC_EDIT1,CDialog2有一个CDialog1 *型的成员变量m_pDlg1:void CDialog1::OnButton1()
{
   CDialog2 dlg2;
   dlg2.m_pDlg1 = this;
   dlg2.DoModal();
}void CDialog2::OnChangeEdit1() 
{
   CString Text;
   GetDlgItemText(IDC_EDIT1, Text);
   m_pDlg1->SetDlgItemText(IDC_EDIT1, Text);
   m_pDlg1->SendDlgItemMessage(IDC_EDIT1, EM_SETSEL, -2, -1);
   m_pDlg1->SendDlgItemMessage(IDC_EDIT1, EM_SCROLLCARET, 0, 0);
}

解决方案 »

  1.   

    对不起,是我没说清楚。
    我要做一个对话框,取代win98的登录对话框。想发很简单:我做一个对话框,启动的时候用ShellExecuteEx启动Mprexe.exe(这是一个98登录的执行文件),让他不可见;然后我想找到98登录对话框上的3个输入框窗口句柄(即用户名、密码、网域),当用户在我的对话框里输入信息时,我就可以把相应的消息发给98登录对话框了,最后模拟一个“确认”按钮按下的消息,不就可以实现我自己的登录了吗?
    还请各位不吝赐教,谢谢!
      

  2.   

    没必要用hook了,既然你已经在你的程序里取得了98登录对话框上的3个输入框窗口句柄,那就在你的程序里直接将键盘鼠标消息向那几个窗口转发不就行了?
      

  3.   

    用keybd_event和mouse_event发模拟键盘鼠标消息
      

  4.   

    当然可以,简单的使用ShellExecuteEx()就可以
      

  5.   

    干嘛要用钩子?WM_COPYDATA不可以么?http://www.csdn.net/develop/article/10/10457.shtm