今天下到了一个单文档应用程序,其中有一个功能:在调出的对话框中设置了4个picture控件,分别设置类别为form。当鼠标在主程序中移动时,这几个控件可以分别用opengl绘制出不同的感兴趣的内容。很厉害。看了快一天终于搞懂了,现在把它的框架给单独的提了出来,,写在这里备忘一下。
first:创建一个常规的单文档应用程序,并创建一个对话框资源id_opengl,然后在上面放一个picture:id_view控件,默认类型为 form。并对这个对话框创建类,基类选择:cdialog
second:下面开始修改了。
首先:对话框的构造函数需要修改成:CTestOpengl(CView* pView);
CTestOpengl::CTestOpengl(CView* pView)
{
m_pView=pView;
}//目的在于将视图类的pview参数传进去。
对话框类的修改主要就这些了。
third:需要在视图类实现opengl绘图了。首先必要包含的头文件和库函数必须先弄好了。
在视图类里面需要定义一下三个函数:initgl(),initscene(),drawscene()。
然后在视图类的ondraw函数中进行如下调用:
CDC* dc=testgl->GetDlgItem(IDC_OPENGL)->GetDC();
wglMakeCurrent(dc->GetSafeHdc(), m_hRC);
DrawScene();
SwapBuffers(dc->GetSafeHdc());
wglMakeCurrent(0, 0);
ReleaseDC(dc);
fourth:还有其它一些小的细节,就不写了,关键是上面的几步:传入视图指针给对话框,在view类中实现opengl绘图就可以了。
ok。到此为止。效果图如下:
既然有人需要源码就把它贴出来吧: