读书人

在MFC中使用OpenGL怎么在双击鼠标时

发布时间: 2012-09-10 22:20:12 作者: rapoo

在MFC中使用OpenGL,如何在双击鼠标时绘图
请高人来指点下,谢谢!
我在MFC中使用OpenGL,但是希望一开始屏幕上没有图像,双击鼠标时才运行绘图函数OnDrawGL(),生成一副图像。
如果把OnDrawGL()放在OnDraw()里面,程序一运行就会绘图。可是如果只是把OnDrawGL()放在OnLButtonDblClk里面,双击鼠标时图像只闪了一下就消失了。我试过goto和glutMouseFunc可是都不行,请问我到底要用什么函数呢?可不可以双击鼠标时才运行OnDraw()函数呢?
OnDraw代码如下:
void CMySpaView::OnDraw(CDC* pDC)
{
CMySpaDoc* pDoc = GetDocument();
ASSERT_VALID(pDoc);
// TODO: add draw code for native data here
//////////////////////////////////////////////////////////////////
// 准备一个标志信号
static BOOL bBusy = FALSE;
if(bBusy) return;//如果忙,则返回
bBusy = TRUE;//置标志为忙,下面开始场景绘制

// 获取设备描述表
wglMakeCurrent(m_pDC->GetSafeHdc(), m_hRC);

// 清除颜色缓冲区和深度缓冲区
glClearColor(0.08f, 0.53f, 0.53f, 0.f);
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);

//设置光照模型
Init();

// 完成图形的绘制
glFinish();

// 启用双缓冲
SwapBuffers(m_pDC->GetSafeHdc());

// 绘制完毕,置标志为空闲
bBusy = FALSE;

// 释放OpenGL绘制描述表
wglMakeCurrent(NULL,NULL);

RenderScene();//渲染场景
//////////////////////////////////////////////////////////////////

}

[解决办法]
成员变量:BOOL m_bShow;初始化为FALSE:m_bShow(FALSE)
OnLDblClk():
m_bShow = TRUE;
Invalidate();
OnDraw():
if (m_bShow)
OnDrawGL();

读书人网 >VC/MFC

热点推荐