如何在一个A对话框类中中调用B对话框类控件,且A类和B类豪不相关?例如:一个对话框类CMailDlg,另一个对话框类CMyDlg,程序运行后,我如何在CMyDlg的方法中调用对话框类CMailDlg控件以及使用控件ID,望大大解惑并劳大大说的详细点,小弟在此谢过

解决方案 »

  1.   

    如何在一个A对话框类中中调用B对话框类控件,且A类和B类豪不相关?
    ==晕。A对话框都用到B对话框的控件了,怎么说A类和B类毫不相关呢???
    当两个对话框都处于运行状态时,你必须先获得另一个对话框当前的运行对象,然后才可以获取它的控件的信息。至于怎么获取,要看你这两个对话框分别在哪里被调用启动才能判断。
      

  2.   

    我如何在CMyDlg的方法中调用对话框类CMailDlg
    把CMydlg的指针放到一个CMailDlg可以取的地方
    全局变量或CApp中
      

  3.   

    这个很简单,你不只是想要控制另一对话框上的控件方法嘛首先用FindWindow得到另一对话框的窗口句柄
    再用FindWindowEx得到另一对放框上的控件句柄就可以通过发送消息的方法来控制另一对话框上的控件的操作了这是MFC中最普遍的做法了,也是最简单的做法
      

  4.   

    首先用FindWindow函数得到另一窗口的句柄HWND hWnd = ::FindWindow("#32770","windowname");此时就可以根据窗口句柄向该窗口发送命令消息了,控制该窗口上的控件
    //注:控件标识(参数3)是固定的,你必须通过SPY++工具来查到,一般OK是固定的:0x2::SendMessage(hWnd,WM_COMMAND,0x2,0);
    //如果有你要得到的控件在子窗口中,就再用::FindWindowEx 函数得到另一窗口上的子窗口句柄下例为如何得到编辑框控件并设置编辑框内容:
    //通过该窗口句柄和控件标识,使用GetDlgItem函数来得到控件的句柄HWND hbtnWnd = ::GetDlgItem(hWnd,0x3FC);   //得到编辑框控件的句柄然后就可以通这个窗口句柄和控件句柄向该控件发送消息来控制该控件了::SendMessage(hbtnWnd,WM_SETTEXT,0,(LPARAM)str.GetBuffer(str.GetLength()));  //更改文本
      

  5.   

    http://community.csdn.net/Expert/FAQ/FAQ_Index.asp?id=203350