我新建了一个基于对话框的名为test的mfc工程,我自己写了一个名为control的非对话框类,CtestDlg类include了control.h,但是在执行control内方法时需要在界面上显示内容,何时显示CtestDlg并不知道,而control又不能直接调用CtestDlg的方法,请问该怎么办呢……

解决方案 »

  1.   

    取到显示时的CtestDlg的指针是关键。
    在control类内,定义CtestDlg *m_dlgTest;
    在CtestDlg的InitDialog中
    m_dlgTest = this;
    然后就可以了,
    m_dlgTest->...
    任意方法。
      

  2.   

    可以在control类内部, 保存CtestDlg实例对象的窗口句柄或指针, 需要操作的时候
    通过 SendMessage或PostMessage 自定义的消息, 让CtestDlg自己处理
      

  3.   

    有几种方法,一种是改一下control的非对话框类的构造函数,加一个CWnd *指针参数,当对话框类中定义control类变量时将对话框对象的this指针传进去就可以操作了。
    第二种:保存对话框的HWND在一个全局变量中,在control中直接用API来操作对话框。
      

  4.   

    定义一个功能接口,CtestDlg实现这个接口,并把这个接口制定传给control,control在需要的时候调用这个接口
      

  5.   

    control类中添加WM_INITDIALOG消息,在OnInitDialog中你初始化你control界面上的东西不就行了