因为CFormView的构造函数和析构函数都是保护类型的,所以在其他类中是无法访问的,因此无法直接在其他类中声明CMyClass的对象。那么要使用CMyClass,该如何做呢?有两种方法:
方法一:
在CMyClass类的头文件中声明其他类为友元类。
方法二:
1.在其他类的头文件中声明CMyClass类的指针,如:
CMyClass *m_pMyCls;
2.在其他类的构造函数中,添加如下代码:
m_pMyCls = (CMyClass*)(RUNTIME_CLASS(CMyClass)->CreateObject());//最重要的地方
3.在其他类的OnCreate函数中,添加如下代码:
RECT rect;
GetClientRect(&rect);
m_pformOption->Create(NULL, "Option window", WS_CHILD|WS_VISIBLE, rect, this, 0, NULL);//重要的地方
4.因为第3步调用到了CMyClass的Create函数,这个函数是继承CFormView类的,在CFormView中它是保护类型,因此,为了可以访问它,我们要在CMyClass中重载它,类型为公开类型。