在窗口控件上进行OpenGL绘图的方法

翻译|其它|编辑:郝浩|2008-03-21 10:02:40.000|阅读 1718 次

概述:

# 界面/图表报表/文档/IDE等千款热门软控件火热销售中 >>

step1: 在你的窗口上绘制控件,比如一个 static , 具体的在这里就不说了, 有一点要提, 控件的Visible属性 必须被钩掉, 就是说设置为不可见;

step2: 从CWnd派生一个新类, 我们用这个类动态的创建窗口,在上面进行绘图, 上面static 控件的作用是为一会儿用这个类 Create子窗口提供位置和size参数;



step3: 新类重载CWnd的 Create和 OnCreate函数,如下:

void COpenGLControl::Create(CRect rect, CWnd *parent)
...{
 //Register window class
 CString className = AfxRegisterWndClass(CS_HREDRAW | CS_VREDRAW | CS_OWNDC,NULL,(HBRUSH)GetStockObject(BLACK_BRUSH),NULL);

 //Finally create the window
 CreateEx(0,className,"OpenGL",WS_CHILD | WS_VISIBLE | WS_CLIPSIBLINGS | WS_CLIPCHILDREN,rect,parent,0);
}

注意在重载的 OnCreate函数中这里用了一个openGLDevice类的create方法,其实这个类只是包装了OpenGL初始化和配置的一些工作,我们可以在这个create的位置上进行一些SetupGL()之类的配置操作(参见我的另一篇日志,里面的初始化配置都可以放在这个位置)

int COpenGLControl::OnCreate(LPCREATESTRUCT lpCreateStruct)
...{
 if (CWnd::OnCreate(lpCreateStruct) == -1)
  return -1;

 dc = new CClientDC(this); //Get device context of window
 openGLDevice.create(dc->m_hDC); //Create opengl rendering context
 InitGL();

 //DONE
 return 0;
}

step4: 在新类中继续添加OnSize,DrawGLScene之类我们需要的函数(方法和平时搞GL的一样), 然后在新类的OnPaint中调用DrawGLScene绘图.

step5: 下来的工作就是在对话框中定义一个新类型的成员变量,然后在对话框的OnInitDialog中按照前面Static的位置和大小Create一个新类型的窗口,就可以在上面绘图了.
标签:

本站文章除注明转载外,均为本站原创或翻译。欢迎任何形式的转载,但请务必注明出处、不得修改原文相关链接,如果存在内容上的异议请邮件反馈至chenjj@evget.com

文章转载自:博客

为你推荐

  • 推荐视频
  • 推荐活动
  • 推荐产品
  • 推荐文章
  • 慧都慧问
扫码咨询


添加微信 立即咨询

电话咨询

客服热线
023-68661681

TOP