class A: public CWnd
{
...
    afx_msg int OnCreate(LPCREATESTRUCT lpCreateStruct);
};class B
{
public:
    A  a;
...
    afx_msg int OnCreate(LPCREATESTRUCT lpCreateStruct)
    {
         if(!B::OnCreate(lpCreateStruct))
             return -1;
         if(!a.Create(NULL,NULL,WS_CHILD,CRect(0,0,0,0),NULL,NULL);
             return -1;
    };};class C
{
method....
};
怎么在类C中获取A的句柄呢?

解决方案 »

  1.   

    有A的对象指针就行了,CWnd的GetSafeWnd()
      

  2.   

    将A a修改为static A a;
      

  3.   

    首先你提到问题就不对,C类只可能获得A类对象的窗口句柄,没对象就没有窗口,当然没有窗口句柄。
    如果C类拥有A类的对象a,那么就可以用a.GetSafeWnd()获得窗口句柄
      

  4.   

    你这样写对么?
    if(!B::OnCreate(lpCreateStruct))
        return -1;
    OnCreate成功不是返回0吗?
    ---
    另外,C现在和A一点关系也没有,C不和A有直接关系,至少也得和B有点关系吧?要不你怎么取句柄,
      

  5.   

    如果在C中:
    A m_a;m_a.GetSafeWnd()能获取到A窗口的句柄吗?