View和Control的区别(如何在对话框上使用CView类)
来源:互联网 发布:java定义变量格式 编辑:程序博客网 时间:2024/04/29 19:09
CView继承类,和其他窗口类的区别,很重要的就是对CDocument类和CFrameWnd类的操作,而其中,涉及CDocument类的操作,都进行了有效性判断(m_pDocument != NULL),CView类初始化的时候,m_pDocument = NULL,因此并不影响CView类作为控件的使用。涉及CFrame类的操作,有这么几个地方:
第一个地方:CView::OnDestroy()。
第二个地方:CView::OnActivateFrame()。
这里,其实是空的,在CView继承类中,只有CFormView类继承了这个虚函数
实际上都不需要真的CFrame指针,对CView类作为控件使用没有障碍。
第三个地方:CView::OnMouseActivate()。
另外,在CView::PostNcDestroy(),实现了CView类的自我销毁,这是因为CView类是可以动态生成的(DECLARE_DYNCREATE/IMPLEMENT_DYNCREATE)。
// self destruction
void CView::PostNcDestroy()
{ // default for views is to allocate them on the heap
// the default post-cleanup is to 'delete this'.
// never explicitly call 'delete' on a view delete this;
}
基本上,修改了CView继承类的这几个地方,直接返回不要调用基类相应的成员函数,就可以在对话框上使用。
下面举例,用向导生成对话框应用程序,对话框类为CMyDigalog。
从CHTMLView类继承一个CHTMLCtrl类,建立相应的消息处理函数并修改以下几个地方:
增加一个成员函数CreateFromCtrl:
public: BOOL CreateFromCtrl(UINT nID, CWnd* pParent);
这个函数通过对话框上的控件创建一个CHTMLCtrl控件,目的是在对话框设计的时候便于布局:
还应注意,默认的从CView继承的类,其构造函数和析构函数是protected的,需要修改成public。
public: CHTMLCtrl(); // 动态创建所使用的受保护的构造函数
virtual ~CHTMLCtrl();
然后,在对话框模板中(使用资源编辑器),插入一个Static Text控件,ID为IDC_HTML。
在对话框头文件中,插入包含文件: #include "htmlctrl.h"
增加CHTMLCtrl类型的成员变量: CHTMLCtrl m_ctlHTML;
在对话框初始化的时候,创建这个CHTMLCtrl控件:
下面,再添加一个按钮,在按钮的消息响应函数中打开HTML文件:
- (转)View和Control的区别(如何在对话框上使用CView类)
- View和Control的区别(如何在对话框上使用CView类)
- view和control的区别(如何在对话框上使用cview类)
- View和Control的区别(如何在对话框上使用CView类)
- View和Control的区别(如何在对话框上使用CView类)
- View和Control的区别(如何在对话框上使用CView类)
- View和Control的区别(如何在对话框上使用CView类)
- VC的对话框中使用CView类
- wm 下在对话框中如何添加cview的继承类并显示出来呢?
- CFormView和CView的区别
- CView类的使用
- c++中CMainframe和CView类的区别?C++工程中的主入口点在哪里?
- (转)如何在没有文档的情况下使用CView及其派生类
- 【框架-MFC】CView(chenlu1):MFC在CView的派生类中实现打印和打印预览
- 在自定义类中使用CView指针遇到的问题
- 抽象类和接口的区别是什么?在使用上是如何选择的?
- 图形的绘制,如何使用自定义画笔(颜色,线宽,线形)。如何为程序中添加选项菜单和选项设置对话框,如何使用标准颜色对话框,如何使用字体对话框,在选项对话框中实现预览功能。实现选项对话框和窗口类中的数据交换。如何改变对话框和控件的背景色,如何改变控件的文本颜色,
- 在 actionbarsherlock 上如何对 item 使用自定义的 view
- weekly log_June 15th, 2008
- 努力着、充实着、快乐着
- 写属性时遇到无限递归或无限循环
- VB一次关闭窗口
- 数字样机系统
- View和Control的区别(如何在对话框上使用CView类)
- [尚学堂]JAVA自学之路 一:学会选择
- [尚学堂]JAVA自学之路 二:JAVA自学路线图
- [尚学堂]JAVA自学之路 三:要动手
- [尚学堂]JAVA自学之路 四:要事为先
- [尚学堂]JAVA自学之路 五:问题解决之道
- 垃圾收集趣史-Java垃圾收集算法
- [尚学堂]JAVA自学之路 六:项目的自学
- [尚学堂]JAVA自学之路 七:路线图明细