OSG+MFC对话框程序

OSG的sample里面有OSG+MFC+MDI的例子。

网上有说OSG+MFCSDI的例子,如http://blog.csdn.net/xuguangsoft/article/details/8164104

 

这里我说一下怎么在MFC对话框上结合使用OSG。

首先,对话框要保持干净,像酱紫:

然后,在你里osg sample里面找到那个OSG+MFC+MDI的例子(osgviewerMFC),在里面找两个文件:MFC_OSG.h 和 MFC_OSG.cpp。

把这两个文件拷到你自己的对话框项目的源代码目录下,然后在IDE里面添加到项目中。

接下来:

  1. 在你的 stdafx.h 中添加上 #include<process.h>
  2. 在你的工程dlg的头文件,比如yourdlg.h中添加 #include "MFC_OSG.h"
  3. 这个时候你的程序是编译通不过的,会出现好多链接error,是因为没有加OSG库。添加以下的库文件
    OpenThreadsd.lib
    osgd.lib
    osgDBd.lib
    osgFXd.lib
    osgManipulatord.lib
    osgParticled.lib
    osgShadowd.lib
    osgSimd.lib
    osgTerraind.lib
    osgTextd.lib
    osgViewerd.lib
    osgUtild.lib
    osgGAd.lib
    OpenThreads.lib
    osg.lib
    osgDB.lib
    osgFX.lib
    osgManipulator.lib
    osgParticle.lib
    osgShadow.lib
    osgSim.lib
    osgTerrain.lib
    osgText.lib
    osgViewer.lib
    osgUtil.lib
    osgGA.lib

    这个时候再把你的程序改为多字节编码(如果你使用的是unicode编码的话),然后就可以编译运行了。当然,是没什么变化的。

  4. 在yourdlg.h的类的定义中,添加两个protected属性的变量 

    cOSG* mOSG;
    HANDLE mThreadHandle;

  5. 在类向导中为yourdlg类添加消息响应WM_CREATE的函数OnCreate。
    int CyourDlg::OnCreate(LPCREATESTRUCT lpCreateStruct)
    {
        if (CDialogEx::OnCreate(lpCreateStruct) == -1)
            return -1;
    
        // TODO:  在此添加您专用的创建代码
        mOSG = new cOSG(m_hWnd);
        return 0;
    }

     

  6. 在OnInitialDlg()中添加以下代码,注意这一点与SDI程序不同,SDI程序是要overrideOnInitialUpdate().
        mOSG->InitOSG("cow.osg");
        mThreadHandle = (HANDLE)_beginthread(&cOSG::Render, 0, mOSG);

     

  7. 我不是代码啊、快放我出去呜呜 w_w  ●﹏●刚才被困到5后面的代码区了,幸好窝懂点HTML,改了HTML才跑出来。
  8. 这个时候程序就可以编译运行了,你会看到酱紫的:
  9. 看到这个运行结果很开心吧,但是呢,为了遵循《程序员的自我修养》,你看看第5步里面用了个new,所以还得delete一下。在类向导里面为yourdlg类添加OnDestory函数
    void CyourDlg::OnDestroy()
    {
        if(mOSG != NULL)
            delete mOSG;
    
        WaitForSingleObject(mThreadHandle, 1000);
    
        CDialogEx::OnDestroy();
    
        // TODO: 在此处添加消息处理程序代码
    }

     

转载于:https://www.cnblogs.com/CoolSummer/p/3505694.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值