设为首页 加入收藏

TOP

用Visual C++在单文档界面中创建视图(二)
2014-11-23 20:01:09 】 浏览:525
Tags:Visual 文档 界面 创建
ndChild && pWndChild->IsKindOf(RUNTIME_CLASS(CView)) )
   {
   // 发现任何从CView继承的子窗口,将子窗口指针传递出去
   *ppWndTemp = pWndChild;
   // 停止继续搜索
   return FALSE;
   }
   else
   {
   *ppWndTemp = NULL;
   // 继续搜索
   return TRUE;
   }}
 

   2.创建新的视图

   CDocument* pCurrentDoc = ((CFrameWnd*) m_pMainWnd)->GetActiveDocument();
   // 初始化创建上下文相关指针
   CCreateContext newContext;
   newContext.m_pNewViewClass = RUNTIME_CLASS(CView1);
   newContext.m_pCurrentDoc = pCurrentDoc;
   newContext.m_pNewDocTemplate = NULL;
   newContext.m_pLastView = NULL;
   newContext.m_pCurrentFrame = NULL;
   CView* pNewView = STATIC_DOWNCAST(CView, CreateView(&newContext));
   if( pNewView == NULL )
   {
   return FALSE;
   }
   // 使用CreateView创建的视图不能自动调用OnInitialUpdate函数,需要人工调用OnInitialUpdate函数或者发送WM_INITIALUPDATE消息
   pNewView->OnInitialUpdate();
   // 使用CreateView创建的视图不会自动显示并且激活,需要人工操作
   pNewView->ShowWindow(SW_SHOW);
   SetActiveView(pNewView);
   RecalcLayout();

  注:RUNTIME_CLASS宏含义

  每一个从CObject类继承的类,在定义DECLARE_DYNAMIC、DECLARE_DYNCREATE、DECLARE_SERIAL三个中任意一个宏时都会产生一个CRuntimeClass结构的静态对象,RUNTIME_CLASS返回的就是这个对象的指针,这个对象包含了其基类和本身在运行时刻的信息。以上是笔者在编写多个视应用在单文档的程序时整理出来的两种方法,因为VC++的强大和灵活,笔者相信还有更加巧妙的方法实现这个功能,希望这篇文章能够起到抛砖引玉的作用,也希望广大VC++编程爱好者对本文能够给予批评和指正。

 

首页 上一页 1 2 下一页 尾页 2/2/2
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇Microsoft Visual Studio.NET及Bo.. 下一篇VC、IE、ASP环境下打印、预览的完..

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目