有个播放声音的类,是从另一个播放声音的类派生出来的,这个父类的OnClose函数是:
DestroyWindow();
m_pParent->SendMessage(WM_DELETEDLG);
在另一个类的消息处理函数OnDeleteDlg里做了如下处理
delete m_playerDlg;
m_playerDlg = NULL;
return 0;
m_pDXplayerDlg是指向那个父类的指针。现在用父类播放声音,关掉窗口后可以销毁该线程。但是用子类播放声音,我在子类的OnClose函数里就不清楚该怎么写了,试着用GetParent()发送消息但是不对请大家急救啊~~~~~~~多谢啊多谢~~~~~

解决方案 »

  1.   

    OnClose是虚函数吗?如果是,在子类的OnClose中调用父类的OnClose
    void 子类::OnClose()
    {
    // do something ...
    父类::OnClose();
    }
      

  2.   

    不是虚函数,OnClose函数是用来处理窗口关闭消息的
      

  3.   

    我想在子类的OnClose函数里也发送一个关闭消息,该怎么写啊
      

  4.   

    在子类的OnClose中调用父类的OnClose应该可以,如果不想这样做可以发调用PostQuitMessage来关闭进程.
      

  5.   

    子类父类和线程这虾米意思
    你beginthread了么
    木有的话那一个线程啊
      

  6.   

    取得父类的句柄,然后调用其onclose函数看看
      

  7.   

    线程是在另一个类里用CreateThread建立的,我想父类既然可以在结束时销毁线程,子类应该也可以,但是该怎么调用呢?
    在子类重载父类的一个方法里是这样写的,m_playerDlg = (CPlayerDad *)(new CPlayerBaby); 既然是父类类型的指针,应该可以调用父类的OnClose啊,可是不行,运行时一关闭子类窗口,程序就当掉了,郁闷我
      

  8.   

    子类和父类都写一个virtual void OnCloseTest()
    在父类OnCloseTest()中OnClose;再调用子类的OnCloseTest()
      

  9.   

    父类是不是你自己写的啊,如果是的将OnClose 定义成虚函数,如果父类不是你写的,也不是虚函数,你只能自己想办法来关闭窗口了,比如发送WM_CLOSE消息.
      

  10.   

    父类不是我写的
    父类的OnClose函数是发送一个消息到第三个类里实现关闭的
    (m_pParent->SendMessage(WM_DELETEDLG);),
    那个类引用了父类和子类的成员。请问在子类的OnClose里怎样发送消息呢?直接SendMessage ,那个类没有响应啊