void COpenGLControl::OnPaint() 
{ openGLDevice.makeCurrent();
 DrawGLScene(); SwapBuffers(dc->m_hDC);// CWnd::OnPaint();
}
按照网上的做法,程序新建了一个类,在这个类之下进行初始化之类的一些工作,然后出现了这样的问题,即MessageBox()不能正常弹出来;按一下Alt键,MessageBox()才可以弹出来。之后发现了解决问题的方法,即在最后加一个CWnd::OnPaint()函数,此时MessageBox可以正常弹出来,但是图形界面不能及时刷新。
不知道该如何解决?该加一个什么样的函数?大家没有遇到过类似的问题?或者使用另外一种在对话框下渲染OpenGL的方法可以解决这个问题? 

解决方案 »

  1.   

    类似的问题我遇到过
    不过我遇到的是去掉CWnd::OnPaint()后收不到时钟消息
    加上就好了
    我解释不了
    但是加上CWnd::OnPaint()不应该影响刷新啊
      

  2.   


    但是我的程序为什么不行啊?要么我留个邮箱?你发过来你的示例代码我试一下?
    [email protected]
    谢谢!
      

  3.   


    我的不是示例
    是个项目
    不方便给你
    不好意思
    而且我看了一下代码
    不是OnPaint的问题
    对不起
    没有调用CWnd::OnPaint();
    是加了一句CPaintDC dc(this);
      

  4.   

    如果编译没有出错的话,说明你的程序没有执行到messagebox位置,而通过onPaint到达了执行位置,建议单步跑跑看看
      

  5.   


    肯定执行messagebox了这句话,只是没有正常的弹出来,需要按一下alt键才能弹出来。同样的问题在opengl单文档底下也有出现。很是奇怪,搞不清楚。
      

  6.   

    编译没有出错的话,说明你的程序没有执行到messagebox位置,而通过onPaint到达了执行位置,建议单步跑,然后再用InvalidateRect(NULL)试试
      

  7.   

    问题解决了,尽管不是很完美,方法很简单,在程序总有说明。程序我已经上传到我的资源中去了,大家可以搜“OpenGL 对话框”,希望和有兴趣的朋友可以继续交流。感谢大家对本帖的关注!
      

  8.   

    怎么解决的说一下呀,我也遇到这个问题了。调用模式对话框,必须按alt才显示。