如何在其他类中实现继承自CFormView类的对象
2015-08-21 23:41
232 查看
今天项目开发中,我们创建了一个对话框资源,并创建了一个派生自CFormView的类(假设为CMyClassDlg)来管理它。
CMyClassDlg.h
CMyClassDlg.cpp
2.在其他类的构造函数中,添加如下代码:
3.在其他类的OnCreate函数中,添加如下代码:
4.因为第3步调用到了CMyClassDlg的Create函数,这个函数是继承CFormView类的,在CFormView中它是保护类型,为了可以访问它,我们要在CMyClassDlg中重载它,类型为公开类型。
CMyClassDlg.h
#pragma once // CMyClassDlg 窗体视图 class CMyClassDlg : public CFormView { DECLARE_DYNCREATE(CMyClassDlg) protected: CMyClassDlg(); // 动态创建所使用的受保护的构造函数 virtual ~CMyClassDlg(); public: enum { IDD = IDD_TASK_DLG }; #ifdef _DEBUG virtual void AssertValid() const; #ifndef _WIN32_WCE virtual void Dump(CDumpContext& dc) const; #endif #endif protected: virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV 支持 DECLARE_MESSAGE_MAP() };
CMyClassDlg.cpp
// MyClassDlg.cpp : 实现文件 // #include "stdafx.h" #include "Test.h" #include "MyClassDlg.h" // CMyClassDlg IMPLEMENT_DYNCREATE(CMyClassDlg, CFormView) CMyClassDlg::CMyClassDlg() : CFormView(CMyClassDlg::IDD) { } CMyClassDlg::~CMyClassDlg() { } void CMyClassDlg::DoDataExchange(CDataExchange* pDX) { CFormView::DoDataExchange(pDX); } BEGIN_MESSAGE_MAP(CMyClassDlg, CFormView) END_MESSAGE_MAP() // CMyClassDlg 诊断 #ifdef _DEBUG void CMyClassDlg::AssertValid() const { CFormView::AssertValid(); } #ifndef _WIN32_WCE void CMyClassDlg::Dump(CDumpContext& dc) const { CFormView::Dump(dc); } #endif #endif //_DEBUG // CMyClassDlg 消息处理程序
问题:如何在其他类中使用CMyClassDlg对象?
由于CFormView的构造函数和析构函数都是保护类型的,故在其他类中是无法访问的,导致无法直接在其他类中声明CMyClass的对象。如何破?-->(两种方案)
方案一:
在CMyClassDlg类的头文件中声明其他类为友元类。方案二:
1.在其他类的头文件中声明CMyClass类的指针,如:CMyClassDlg *m_pMyClassDlg;
2.在其他类的构造函数中,添加如下代码:
m_pMyClassDlg = (CMyClassDlg*)(RUNTIME_CLASS(CMyClassDlg)->CreateObject());//最重要的地方
3.在其他类的OnCreate函数中,添加如下代码:
CRECT rect; GetClientRect(&rect); m_pMyClassDlg->Create(NULL, "Option window", WS_CHILD|WS_VISIBLE, rect, this, 0, NULL);//重要的地方
4.因为第3步调用到了CMyClassDlg的Create函数,这个函数是继承CFormView类的,在CFormView中它是保护类型,为了可以访问它,我们要在CMyClassDlg中重载它,类型为公开类型。
相关文章推荐
- 以生产者消费者为例实现Linux进程线程控制
- 背单词的坏习惯
- 【Objective-C】Copy语法
- iPad、iPhone 界面设计标准
- 黑马程序员-OC-Foundation框架总结一
- app 图标规格参考表
- leetcode - Convert Sorted Array to Binary Search Tree
- 正则表达式相关图书推荐
- UVALive - 4848 Tour Belt(暴力+最小生成树)
- 火狐访问博客园报400错误问题解决
- Sorting It All Out
- 【一些事晚报】打败微信的将是怎么样的一款产品?
- POJ 2299 Ultra-QuickSort(求逆序数)
- 疯狂Java讲义中的程序,使用代理服务器来获取网上的资源
- hdu 5316 Magician 2015 Multi-University Training Contest 3
- 代写代做程序设计 国外算法编程 VB/C语言/C++/数据结构/Java/PHP/Python
- 关于support design包中behaviour的使用
- 如何不碌碌无为的活着?
- leetcode 151: Reverse Words in a String
- 黑马程序员-c语言-字符串求公共子类