cformview的create函数怎么用
1个回答
2017-02-02 · 知道合伙人互联网行家
关注
展开全部
方法一:
在CMyClass类的头文件中声明其他类为友元类。显然不是太爽
方法二:
1.在其他类的头文件中声明CMyClass类的指针,如:
CMyClass *m_pMyCls;
(注: 这里不一定要作为类的成员变量, 如果只是需要创建而不需要管理该对象时, 完全可以作为临时变量)
2.在其他类的构造函数中,添加如下代码:
m_pMyCls = (CMyClass*)(RUNTIME_CLASS(CMyClass)->CreateObject());//最重要的地方
(注: 既然CMyClass是自定义类, 那么这里当然可以把构造函数public一下了. 不过关键是这种方法不错, 值得借鉴 -- 即如何创建构造函数是protected成员的对象, 即使用CRuntimeClass的CreateObject()函数).
3.在其他类的OnCreate函数中,添加如下代码:
RECT rect;
GetClientRect(&rect);
m_pMyCls->Create(NULL, "Option window", WS_CHILD|WS_VISIBLE, rect, this, 0, NULL);//重要的地方
(注: 不知道为什么非要在人家类的OnCreate函数中创建, 实际上个人认为只要在父窗口的窗口结构体被创建以后都是可以的, 因为我试过了在构造函数中是不可以的, 呵呵. 我试了其它的地方, 比如CView::OnInitialUpdate和CDialog::OnInitDialog都应该没有问题的)
4.因为第3步调用到了CMyClass的Create函数,这个函数是继承CFormView类的,在CFormView中它是保护类型,因此,为了可以访问它,我们要在CMyClass中重载它,类型为公开类型。
(注: 方法很简单, 只需要加上该函数(在VC6的ClassWizard中给该类增加虚函数Create即可, 默认类型即是公开的, 且不需要修修改其代码)
在CMyClass类的头文件中声明其他类为友元类。显然不是太爽
方法二:
1.在其他类的头文件中声明CMyClass类的指针,如:
CMyClass *m_pMyCls;
(注: 这里不一定要作为类的成员变量, 如果只是需要创建而不需要管理该对象时, 完全可以作为临时变量)
2.在其他类的构造函数中,添加如下代码:
m_pMyCls = (CMyClass*)(RUNTIME_CLASS(CMyClass)->CreateObject());//最重要的地方
(注: 既然CMyClass是自定义类, 那么这里当然可以把构造函数public一下了. 不过关键是这种方法不错, 值得借鉴 -- 即如何创建构造函数是protected成员的对象, 即使用CRuntimeClass的CreateObject()函数).
3.在其他类的OnCreate函数中,添加如下代码:
RECT rect;
GetClientRect(&rect);
m_pMyCls->Create(NULL, "Option window", WS_CHILD|WS_VISIBLE, rect, this, 0, NULL);//重要的地方
(注: 不知道为什么非要在人家类的OnCreate函数中创建, 实际上个人认为只要在父窗口的窗口结构体被创建以后都是可以的, 因为我试过了在构造函数中是不可以的, 呵呵. 我试了其它的地方, 比如CView::OnInitialUpdate和CDialog::OnInitDialog都应该没有问题的)
4.因为第3步调用到了CMyClass的Create函数,这个函数是继承CFormView类的,在CFormView中它是保护类型,因此,为了可以访问它,我们要在CMyClass中重载它,类型为公开类型。
(注: 方法很简单, 只需要加上该函数(在VC6的ClassWizard中给该类增加虚函数Create即可, 默认类型即是公开的, 且不需要修修改其代码)
网易云信
2023-12-06 广告
2023-12-06 广告
UIkit是一套轻量级、模块化且易于使用的开源UI组件库,由YOOtheme团队开发。它提供了丰富的界面元素,包括按钮、表单、表格、对话框、滑块、下拉菜单、选项卡等等,适用于各种类型的网站和应用程序。UIkit还支持响应式设计,可以根据不同...
点击进入详情页
本回答由网易云信提供
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询