网上可以搜到很多介绍在MFC单文档/多文档程序里如何设置OpenGL绘图的方法,但是对话框MFC程序的与之有很大不同。下面的代码会示例如何在对话框程序里设置OpenGL。请注意几个重要的地方:
1. 消息映射的添加/删除。
2. 响应函数的添加/删除。
3. SwapBuffer函数,少了这个程序就会失灵。
建立一个基于对话框的工程(名称:OpenGL)
并且在设置的Link里加入库opengl32.lib glu32.lib glaux.lib (设置参见其他帖子)
为对话框添加picture control 控件,ID:IDC_RENDER
建立好框架后替换代码:
1、将以下代码替换OpenGLDlg.cpp中代码
复制代码
// OpenGLDlg.cpp : implementation file
//
#include "stdafx.h"
#include "OpenGL.h"
#include "OpenGLDlg.h"
#include <gl/gl.h>
#include <gl/glu.h>
#include <gl/glaux.h>
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/
// CAboutDlg dialog used for App About
class CAboutDlg : public CDialog
{
public:
CAboutDlg();
// Dialog Data
//{
{AFX_DATA(CAboutDlg)
enum { IDD = IDD_ABOUTBOX };
//}}AFX_DATA
// ClassWizard generated virtual function overrides
//{
{AFX_VIRTUAL(CAboutDlg)
protected:
virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV support
//}}AFX_VIRTUAL
// Implementation
protected:
//{
{AFX_MSG(CAboutDlg)
//}}AFX_MSG
DECLARE_MESSAGE_MAP()
};
CAboutDlg::CAboutDlg() : CDialog(CAboutDlg::IDD)
{
//{
{AFX_DATA_INIT(CAboutDlg)
//}}AFX_DATA_INIT
}
void CAboutDlg::DoDataExchange(CDataExchange* pDX)