zoukankan      html  css  js  c++  java
  • 单文档切换OpenGL视图

      1.新建一个是继承CView的新类CViewSecond

      2.menu中建两个菜单,在mainframe中添加对应的消息响应OnDataView,On3dView

       mainframe中添加成员变量m_curView;下面代码中ShowWindow(SW_SHOWMAXIMIZED),参数一定是最大化的参数啊,千万别写SW_SHOW,debug好大会儿,发现参数为SW_SHOW的时候视图rect为0啊,0啊。。。。只有移动窗口的时候才显示opengl,发现,ondraw函数死活不被调用,然后消息响应onpaint添加ondraw也不行。。。 最后试试试试 。。。参数的问题。。。。。残念啊。。。

     1 void CMainFrame::On3dView()
     2 {
     3     // TODO: 在此添加命令处理程序代码
     4     if (m_curView == ID_3D_VIEW)
     5     {
     6         return;
     7     }
     8     CView* pOldActiveView = GetActiveView(); 
     9     CRuntimeClass* pNewViewClass;
    10     pNewViewClass = RUNTIME_CLASS(CViewSecond);
    11     CCreateContext context;
    12     context.m_pNewViewClass = pNewViewClass;
    13     context.m_pCurrentDoc = GetActiveDocument();
    14     CView* pNewView = STATIC_DOWNCAST(CView, CreateView(&context));
    15     if (pNewView != NULL)
    16     {
    17         pNewView->ShowWindow(SW_SHOWMAXIMIZED);
    18         pNewView->OnInitialUpdate();
    19         SetActiveView(pNewView);
    20         RecalcLayout(TRUE);
    21         m_curView = ID_3D_VIEW;
    22         pOldActiveView->DestroyWindow();
    23     }
    24 
    25 
    26 }
    27 
    28 void CMainFrame::OnDataView()
    29 {
    30     // TODO: 在此添加命令处理程序代码
    31     if (m_curView == ID_DATA_VIEW)
    32     {
    33         return;
    34     }
    35     CView* pOldActiveView = GetActiveView(); 
    36     CRuntimeClass* pNewViewClass;
    37     pNewViewClass = RUNTIME_CLASS(CDocView);
    38     CCreateContext context;
    39     context.m_pNewViewClass = pNewViewClass;
    40     context.m_pCurrentDoc = GetActiveDocument();
    41     CView* pNewView = STATIC_DOWNCAST(CView, CreateView(&context));
    42     if (pNewView != NULL)
    43     {
    44         pNewView->ShowWindow(SW_SHOWMAXIMIZED);
    45         pNewView->OnInitialUpdate();
    46         SetActiveView(pNewView);
    47         RecalcLayout();
    48         m_curView = ID_DATA_VIEW;
    49         pOldActiveView->DestroyWindow();
    50     }
    51 
    52 }

      3.CViewSecond中添加相应的初始化OpenGL的各种东西,OK。。。。

  • 相关阅读:
    SQLAlchemy(2):多表操作 & 连接方式及原生SQL
    SQLAlchemy(1):单表操作
    requests模块发送POST请求
    Flask(4):wtforms组件 & 数据库连接池 DBUtils
    爬虫(1):requests模块
    socketserver模块使用 & websocket
    Flask基础(3):session、flash、特殊装饰器、蓝图、路由正则匹配、上下文管理 & flask-session
    MySQL:视图、触发器、存储过程、事务
    UICollectionViewLayout
    iOS7自定义statusbar和navigationbar的若干问题
  • 原文地址:https://www.cnblogs.com/AZ-ZK/p/4222441.html
Copyright © 2011-2022 走看看