最近在做一个基于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();
}就无法更新了,请问有人遇到过这种情况么。OpenGL mfc