opengl对话框中messagebox等不能正常弹出

FlexRay4310 2010-04-26 11:29:39
void COpenGLControl::OnPaint()
{

openGLDevice.makeCurrent();
DrawGLScene();

SwapBuffers(dc->m_hDC);

// CWnd::OnPaint();
}
按照网上的做法,程序新建了一个类,在这个类之下进行初始化之类的一些工作,然后出现了这样的问题,即MessageBox()不能正常弹出来;按一下Alt键,MessageBox()才可以弹出来。之后发现了解决问题的方法,即在最后加一个CWnd::OnPaint()函数,此时MessageBox可以正常弹出来,但是图形界面不能及时刷新。
不知道该如何解决?该加一个什么样的函数?大家没有遇到过类似的问题?

或者使用另外一种在对话框下渲染OpenGL的方法可以解决这个问题?
...全文
493 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
zjengjie 2011-11-21
  • 打赏
  • 举报
回复
怎么解决的说一下呀,我也遇到这个问题了。调用模式对话框,必须按alt才显示。
FlexRay4310 2010-04-30
  • 打赏
  • 举报
回复
问题解决了,尽管不是很完美,方法很简单,在程序总有说明。程序我已经上传到我的资源中去了,大家可以搜“OpenGL 对话框”,希望和有兴趣的朋友可以继续交流。感谢大家对本帖的关注!
尹成 2010-04-30
  • 打赏
  • 举报
回复
编译没有出错的话,说明你的程序没有执行到messagebox位置,而通过onPaint到达了执行位置,建议单步跑,然后再用InvalidateRect(NULL)试试
虎纠印象 2010-04-29
  • 打赏
  • 举报
回复
InvalidateRect(NULL)试试。
FlexRay4310 2010-04-29
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 xiuxianshen 的回复:]
如果编译没有出错的话,说明你的程序没有执行到messagebox位置,而通过onPaint到达了执行位置,建议单步跑跑看看
[/Quote]

肯定执行messagebox了这句话,只是没有正常的弹出来,需要按一下alt键才能弹出来。同样的问题在opengl单文档底下也有出现。很是奇怪,搞不清楚。
向立天 2010-04-29
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 zbafa3723 的回复:]
引用 2 楼 xianglitian 的回复:
类似的问题我遇到过
不过我遇到的是去掉CWnd::OnPaint()后收不到时钟消息
加上就好了
我解释不了
但是加上CWnd::OnPaint()不应该影响刷新啊


但是我的程序为什么不行啊?要么我留个邮箱?你发过来你的示例代码我试一下?
mailzhang208@sina.com
谢谢!
[/Quote]

我的不是示例
是个项目
不方便给你
不好意思
而且我看了一下代码
不是OnPaint的问题
对不起
没有调用CWnd::OnPaint();
是加了一句CPaintDC dc(this);
xiuxianshen 2010-04-29
  • 打赏
  • 举报
回复
如果编译没有出错的话,说明你的程序没有执行到messagebox位置,而通过onPaint到达了执行位置,建议单步跑跑看看
FlexRay4310 2010-04-29
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 xianglitian 的回复:]
类似的问题我遇到过
不过我遇到的是去掉CWnd::OnPaint()后收不到时钟消息
加上就好了
我解释不了
但是加上CWnd::OnPaint()不应该影响刷新啊
[/Quote]

但是我的程序为什么不行啊?要么我留个邮箱?你发过来你的示例代码我试一下?
mailzhang208@sina.com
谢谢!
FlexRay4310 2010-04-27
  • 打赏
  • 举报
回复
没人顶?自己顶起!
向立天 2010-04-27
  • 打赏
  • 举报
回复
类似的问题我遇到过
不过我遇到的是去掉CWnd::OnPaint()后收不到时钟消息
加上就好了
我解释不了
但是加上CWnd::OnPaint()不应该影响刷新啊

19,468

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 图形处理/算法
社区管理员
  • 图形处理/算法社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧