如何在对话框程序中使用view类
2012-01-05 09:40
323 查看
如有开发需要,例如如自己写个小软件什么的,需要在对话框程序中使用到view类,但是有不想view类中带有doc类,可以用以下的做法:
① 从view类中继承一个CXXXView类
② 重写如下几个函数:OnMouseActivate、PostNcDestroy、OnActivateFrame
其中OnMouseActivate函数要修改成返回基类处理的结果
而PostNcDestroy、OnActivateFrame则改为空函数
③ 关键在这里,在CXXXView类创建一个CreateFromDlg函数,用于创建View窗口
其中使用了View类的Create方法
④ 最后,看看从view类派生出来的类中,构造函数和析构函数都是protect的,当然要
改成public的了,不然外部用不了。
这样一来,在对话框类中中 CXXXView m_xxxView,再调用m_xxxView.Create(...)就可以动态创建View类窗口了
① 从view类中继承一个CXXXView类
② 重写如下几个函数:OnMouseActivate、PostNcDestroy、OnActivateFrame
其中OnMouseActivate函数要修改成返回基类处理的结果
int CXXXView::OnMouseActivate(CWnd* pDesktopWnd, UINT nHitTest, UINT message) { // TODO: 在此添加消息处理程序代码和/或调用默认值 return CWnd::OnMouseActivate(pDesktopWnd, nHitTest, message); // return CRichEditView::OnMouseActivate(pDesktopWnd, nHitTest, message); } void CPiaoDbgEditView::PostNcDestroy() { // TODO: 在此添加专用代码和/或调用基类 // CRichEditView::PostNcDestroy(); } void CPiaoDbgEditView::OnActivateFrame(UINT nState, CFrameWnd* pDeactivateFrame) { // TODO: 在此添加专用代码和/或调用基类 // CRichEditView::OnActivateFrame(nState, pDeactivateFrame); }
而PostNcDestroy、OnActivateFrame则改为空函数
③ 关键在这里,在CXXXView类创建一个CreateFromDlg函数,用于创建View窗口
其中使用了View类的Create方法
BOOL CXXXView::CreateFromDlg(UINT nID, CWnd* pParentWnd) { if (!pParentWnd || !pParentWnd->GetSafeHwnd()) { return FALSE; } //......此处省略若干代码 this->Create(NULL, NULL, nStyle, rect, pParentWnd, nID, NULL); //......此处省略若干代码 }
④ 最后,看看从view类派生出来的类中,构造函数和析构函数都是protect的,当然要
改成public的了,不然外部用不了。
这样一来,在对话框类中中 CXXXView m_xxxView,再调用m_xxxView.Create(...)就可以动态创建View类窗口了
相关文章推荐
- 如何在程序里使用代码关闭由MessageBox()弹出的对话框?
- (转)View和Control的区别(如何在对话框上使用CView类)
- (转)View和Control的区别(如何在对话框上使用CView类)
- 微信小程序例子——如何使用scroll-view组件实现视图垂直滚动
- view和control的区别(如何在对话框上使用cview类)
- View和Control的区别(如何在对话框上使用CView类)
- 图形的绘制,如何使用自定义画笔(颜色,线宽,线形)。如何为程序中添加选项菜单和选项设置对话框,如何使用标准颜色对话框,如何使用字体对话框,在选项对话框中实现预览功能。实现选项对话框和窗口类中的数据交换。如何改变对话框和控件的背景色,如何改变控件的文本颜色,
- 如何在对话框程序中使用动画控件
- View如何使用对话框中的变量
- VC对话框程序如何使用chtmlview
- View和Control的区别(如何在对话框上使用CView类)
- View和Control的区别(如何在对话框上使用CView类)
- View和Control的区别(如何在对话框上使用CView类)
- 微信小程序例子——如何使用view组件显示文字
- SDWebImage与UIScrollView或UICollectionView一起使用多次收到“Received memory warning.”,最终程序闪退的原因分析和解决办法。
- (译)如何优化cocos2d程序的内存使用和程序大小:第一部分
- JSP设计模式基础:View Helper模式——学习如何使用View Helper模式使得Model数据适应表现层的需要(3)
- Wix打包系列(一)如何使用wix制作安装程序
- 如何使用Java程序通过JDBC访问HDInsight Hive Server
- 如何使用VC++写一个小程序来检测.NetFrameWork版本