RT:因为我要调用对框类的以个成员函数!
HRESULT CSink::OnDeviceConnected(IRAPIDevice *pIDevice)
{
HRESULT hr=S_OK;
if(pIDevice)
{
::AfxMessageBox(_T("设备连接成功"));

//当上面的成功时我要调用对话框类的成员函数
return hr;
}
怎么样才能得到对话框的指针

解决方案 »

  1.   

    HRESULT CSink::OnDeviceConnected(IRAPIDevice *pIDevice, CXXDialog* pDlg); 你可以吧对话框的指针用这个函数传进去
    加个参数就行了
      

  2.   

    什么对话框?如果是对话框项目的主窗口,可以用AfxGetMainWnd获得,转换成程序中定义的对话框类型即可使用。
      

  3.   

    回复Jcily:
    增加个参数是不行的!因为我的那个函数是实现父类的纯虚函数,如果乱改参数就不能实例化了!
    回复dayong576:
    我用了全局变量去标记啊!但执行到我函数里是空值
     CCESyncDlg× g_Dlg;
    CCESyncDlg::CCESyncDlg(CWnd* pParent /*=NULL*/)
    : CDialog(CCESyncDlg::IDD, pParent)
    , mStateStr(_T(""))
    , mPromptStr(_T(""))
    {
     g_Dlg=this;  
    EnableActiveAccessibility();
    m_hIcon = AfxGetApp()->LoadIcon(IDR_JLION);
    }
    //全局类的成员函数
    HRESULT CMySink::OnDeviceConnected(IRAPIDevice *pIDevice)
    {
    HRESULT hr=S_OK;
    if(pIDevice)
    {
    ::AfxMessageBox(_T("设备连接成功"));

        g_Dlg->OnBnClickedSync();  //传进来的g_Dlg是空值
    return hr;
    }回复:cnzdgs:我的主对话框类
      

  4.   

    CCESyncDlg* dlg = (CCESyncDlg*)AfxGetMainWnd();
    dlg->
      

  5.   

    晕啦!dlg怎么还还是0x00000000;不知道那个地方错了
      

  6.   

    你的OnDeviceConnected是不是在对话框创建之前就会执行?
    如果是就在里面做一下判断。对话框指针不为NULL,才对其进行调用
      

  7.   

    全局变量那个办法,只要执行了CCESyncDlg的构造函数,就不会是NULL的。
    肯定是OnDeviceConnected在他构造之前先执行了
      

  8.   

    是在对话框初始化的之后才执行的啊,也就是说在执行完初始化时对话框已经弹出来了才去执行OnDeviceConnected(),我也感觉很迷茫啊!我也觉得执行了CCESyncDlg的构造函数,就不会是NULL的。 但是什么原因我搞不懂啊!
      

  9.   

    你没实例化当然是NULL了.如果是主对话框干么还去定义?直接用AfxGetMainWnd获得.