类指针 和 实例指针不一样是啵?
 this指针 是个类指针  不是实例指针~?
小弟没学过编译原理.. 弱弱问一下..这样的:
我在CMainFram类里面 声明有一个  CSpliWnd 类的变量m_spliClass CMainFram
{
  public:
     CSpliWnd   m_spli;
     CStatusBar m_statebar;
  //这些变量在CMainFram构造的时候实例化了(这是当然的)
     MainFrameFounction();
}
然后 
void CMainFram::OnCreate();
{
  m_statebar.CreateEx(...);
  .....//这里m_statebar已经创建了状态栏
}在然后有:
void CMainFram::OnCreateClient();
{
  m_spli.Create(this,...);
  //下面有给出Create的定义
  ...
}在CSpliWnd 类里这样的定义
Class CSpliWnd
{
  Public:
     CWND* m_pParent;
     void Create(cwnd* parent,...);
     void CSpliWndFounction();
     ....
}
void CSpliWnd::Create(cwnd* parent,...);

   m_pParent=(CMainFrame*)parent;
}这样就记录了原来宿主窗口类的指针...但是: 继续下面的操作不行.void CSpliWnd::CSpliWndFounction();
{
  m_pParent.MainFrameFounction();
}然后...跳到了..
void CMainFram::MainFrameFounction();
{
  m_statebar.SetPanText(2,"That's OK");//这里出错  .....
  
  //在监视器里面看到m_statebar为0x000000,空的。
 //问题出来了:跳到这里并不是调用m_spli的那个实例...
}最后弱弱问一下:this指针为什么传递不了宿主实例过来?但是从theApp实例里面获取m_MainFrame就可以得到正确的。
高手请帮帮忙呀!

解决方案 »

  1.   

    m_pParent=(CMainFrame*)AfxGetMainWnd();试试 
      

  2.   

    ...问题找到了,我的程序有逻辑上的问题。
    本来是可以实现的,m_MainFrame的this指针就是m_ManFrame的地址,我程序的逻辑问题出错让我怀疑这点了。
    因为我之前在两个不同的窗口类对象里面各创建了一个SpliWnd类对象,所以分别传递了这两个类实例的this指针给它们的CSpliWnd类实例。但在SlipWndFuntion()里面,已经死定义这个this指针强制为CMainFrame*了,所以另一个类需要调用SlipWndFuntion()当然不会跳到m_MainFrame里面了!   小题大作  大家见笑了!