在MFC中的picture control 中使用opengl作图

转载自:http://blog.sina.com.cn/s/blog_8e6bfecf0100uuwy.html,觉得这个写的详细一些,自己测试也成功,在此基础上做了点修改,收藏记录分享下。。。

新建一个MFC的dialog工程(eg,C++MFC工程openGlMFC)。

为了方便进行字符串CString与其它格式的转换,在工程属性的Configuration Properties -> General -> Character Set中,不使用默认的Use Unicode Character Set,改为Use Multi-Byte Character Set

在项目属性的linker->input->additional dependencies中加入:opengl32.lib;glu32.lib;glut32.lib;glaux.lib

在MFC组件中添加一个Picture Control组件,将组件ID改为IDC_RENDER

在stdafx.h的末尾加入:("#include< afxcontrolbars.h>"之后加入)
    #include< GL/glut.h>
    #include< GL/glaux.h>    

在??Dlg.h的 "enum { IDD = IDD_??_DIALOG };" 下加入:
    BOOL SetWindowPixelFormat(HDC hDC);                    // 设定像素格式
    BOOL CreateViewGLContext(HDC hDC);                    // view GL Context
    void RenderScene();                                                    // 绘制场景
    HDC hrenderDC;                                                            // DC
    HGLRC hrenderRC;                                                        // RC
    int PixelFormat;                                                        // 像素格式

在??Dlg.h的"DECLARE_MESSAGE_MAP()"下加入:
    afx_msg void OnTimer(UINT nIDEvent);                // 重载OnTimer函数

在??Dlg.cpp的"BEGIN_MESSAGE_MAP(CCOpenGLDlg, CDialog)...END_MESSAGE_MAP()"中加入:(注意不要加错了地方
    ON_WM_TIMER()

在??Dlg.cpp的OnInitDialog()中加入OpenGL的初始化声明etc:
    CWnd* wnd = GetDlgItem(IDC_RENDER);          

阅读更多
换一批

没有更多推荐了,返回首页