怎么在viusal c++ 里面创建mfc程序并添加OpenGL 控件
时间: 2023-06-19 21:05:30 浏览: 170
在 Visual C++ 中,可以按照以下步骤创建 MFC 应用程序并添加 OpenGL 控件:
1. 打开 Visual Studio,选择创建一个新项目。
2. 在创建新项目的向导中,选择“MFC 应用程序”并点击“下一步”。
3. 选择“桌面应用程序”并点击“下一步”。
4. 在“应用程序类型”中选择“单文档”或“多文档”,并点击“下一步”。
5. 在“高级特性”中勾选“使用 OpenGL”并点击“完成”。
6. 在类视图中打开“MainFrm.cpp”文件,在 `CMainFrame::OnCreate()` 函数中添加以下代码:
```C++
m_wndView.Create(NULL, NULL, AFX_WS_DEFAULT_VIEW, CRect(0, 0, 0, 0), this, AFX_IDW_PANE_FIRST, NULL);
```
7. 在类视图中打开“MainFrm.h”文件,在 `CMainFrame` 类的末尾添加以下代码:
```C++
protected:
CView m_wndView;
```
8. 在类视图中打开“View.cpp”文件,在 `CView::OnDraw()` 函数中添加以下代码:
```C++
glClearColor(0.0f, 0.0f, 0.0f, 0.0f);
glClear(GL_COLOR_BUFFER_BIT);
glFlush();
```
9. 在类视图中打开“View.h”文件,在 `CView` 类的末尾添加以下代码:
```C++
protected:
HGLRC m_hglrc;
```
10. 在 `CView` 类的 `OnCreate()` 函数中添加以下代码:
```C++
PIXELFORMATDESCRIPTOR pfd;
int nPixelFormat;
// Get the device context (DC)
HDC hdc = ::GetDC(m_hWnd);
// Set the pixel format descriptor
ZeroMemory(&pfd, sizeof(pfd));
pfd.nSize = sizeof(pfd);
pfd.nVersion = 1;
pfd.dwFlags = PFD_DRAW_TO_WINDOW | PFD_SUPPORT_OPENGL | PFD_DOUBLEBUFFER;
pfd.iPixelType = PFD_TYPE_RGBA;
pfd.cColorBits = 24;
pfd.cDepthBits = 16;
pfd.iLayerType = PFD_MAIN_PLANE;
// Choose a pixel format that best matches that described in pfd
nPixelFormat = ::ChoosePixelFormat(hdc, &pfd);
// Set the pixel format for the device context
::SetPixelFormat(hdc, nPixelFormat, &pfd);
// Create a rendering context (RC)
m_hglrc = wglCreateContext(hdc);
// Make the RC current
wglMakeCurrent(hdc, m_hglrc);
```
11. 在 `CView` 类的 `OnDestroy()` 函数中添加以下代码:
```C++
// Get the device context (DC)
HDC hdc = ::GetDC(m_hWnd);
// Make the RC not current
wglMakeCurrent(hdc, NULL);
// Delete the RC
wglDeleteContext(m_hglrc);
```
12. 在 `CView` 类的 `OnSize()` 函数中添加以下代码:
```C++
// Get the device context (DC)
HDC hdc = ::GetDC(m_hWnd);
// Set the viewport
glViewport(0, 0, cx, cy);
// Set the projection matrix
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
gluPerspective(45.0f, (GLfloat)cx / (GLfloat)cy, 0.1f, 100.0f);
// Set the modelview matrix
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
// Release the device context
::ReleaseDC(m_hWnd, hdc);
```
这样,您就可以在 MFC 应用程序中添加 OpenGL 控件了。
阅读全文