OpenGL与MFC,奇怪的问题,无法理解

xiaohanxiong 2013-09-21 03:35:20
最近在做一个基于MFC的OpenGL演示程序给客户。遇到了一个无法理解的问题:
程序功能基本上没什么大碍,这是让我很欣慰的地方,问题居然出在了界面上,而且还是工具栏的问题,不扯了,看具体问题。

工具栏上的按钮和菜单栏上相应的ID绑定在一起,并用UpdateUI来更新工具栏的状态(开启/禁用),这本是很顺理成章的事情,而且前面的几个命令也实现的很好没有问题。在最后,我添加最后一个功能的时候,居然发生,工具栏无法更新的问题,这让我很无法理解。因为所有的工具栏都和相应的几个菜单绑定,并且其他几个菜单都会正常更新工具栏,唯独最后一个除了问题,。。。
看了一篇文章:http://blog.csdn.net/lsldd/article/details/7599225

我更加疑惑了,求解释,究竟是什么问题。。。。

比如:

void CSeerView::OnPerspective()
{
m_Mode = OBSERVATION;
m_ObserveMode = PERSPECTIVE;
m_OperaMode = PAN;
m_ViewMode = FREE_VIEW;

m_Scene.m_TransferMatrix.EMatrix();
m_Camera.m_TransferMatrix.EMatrix();

if( m_bShowCusor != TRUE )
{
m_bShowCusor = TRUE;
ShowCursor(TRUE);
}

m_xEyePos = 10;
m_yEyePos = 10;
m_zEyePos = 10;
m_xViewPos = 0;
m_yViewPos = 0;
m_zViewPos = 0;
Invalidate();
}


这个菜单命令就能更新,但是。。。
换了一个菜单

void CSeerView::OnWander()
{
m_Mode = WANDER;
m_ObserveMode = PERSPECTIVE;
m_OperaMode = 0;
m_ViewMode = 0;

m_Scene.m_TransferMatrix.EMatrix();
m_Camera.m_TransferMatrix.EMatrix();

//if( m_bShowCusor != FALSE )
//{
// m_bShowCusor = FALSE;
// ShowCursor(FALSE);
//}

m_horOffset = 0;
m_verOffset = 0;
m_xEyePos = 0;
m_yEyePos = 0;
m_zEyePos = 1;
m_xViewPos = m_xEyePos + sin(m_horOffset);
m_yViewPos = m_yEyePos + cos(m_horOffset);
m_zViewPos = m_zEyePos + m_verOffset;

Invalidate();
}

就无法更新了,请问有人遇到过这种情况么。。。。
...全文
49 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
xiaohanxiong 2013-09-30
  • 打赏
  • 举报
回复
自己解决啦,哈哈。

15,979

社区成员

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

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