我新建了个SDI的界面,然后新建了个CDIa的类,基类为CDialog。
我在CDIa中响应ONBUTTON1消息,
我是想在这个按钮按下的时候,呼叫CRichCtrlView类中的一个函数进行视图的文本输出我直接在ONBUTTON1函数中这样做的
    CRichView *pView=(CRichView *)GetParent();
    pView->GetRichEditCtrl()问题是,这新建的这个类跟原来的类有什么关联吗?它只是一个我单独建出来的类罢了
为什么GetParent()时取到的父窗口会是CRichView???想不明白,难道这个类一新建起来的时候就已经跟整个程序的某些类关联好了?如果是那又是怎么进行的呢??

解决方案 »

  1.   

    GetParent()取得的不一定是CRichView类,他就是你建窗口的父窗口嘛!不过也可以强制转换成CRichView,如果父窗口不真是CRichView则会出错!
      

  2.   

    这个类一新建起来的时候就不可能跟整个程序的某些类关联好,GetParent()取得的一定是你新建窗口的父窗口. 像yds(康熙大帝) 所说
      

  3.   

    CDIa在CRichView的函数创建的GetParent()才是CRichView。调用GetActiveView()吧
      

  4.   

    可是我建CDia的时候我可没指定它的父窗口是谁啊,
    那为什么刚好CRichView,而不会是CMainFraime类呢??
    因为我只是定义CDia类的,可没使用它啊。
    然道就会自动默认为是我们所使用的视图类的子类??
      

  5.   

    这个与关联无关,GetParent()是一个win32 api(系统提供的函数),mfc只是重载了他,并在重载内部引用这个api
      

  6.   

    上楼,正解!!!!!!如果想更明白,可以查看msdn!!!!!1