vs2010 中的CMFCRibbonStatusBar 怎么不自动更新。。??

逆水寒_ 2015-07-16 09:24:33
CMainFrm类中的OnCreate函数有一下代码: 
CString strTitleMain;
CString strTitleMousePt;

bNameValid = strTitleMain.LoadString(IDS_STATUS_MAIN);
ASSERT(bNameValid);
bNameValid = strTitleMousePt.LoadString(IDS_STATUS_MOUSEPT);
ASSERT(bNameValid);

m_wndStatusBar.AddElement(new CMFCRibbonStatusBarPane(ID_STATUSBAR_MAIN, strTitleMain, TRUE), strTitleMain);
m_pStatusBarPane = new CMFCRibbonStatusBarPane(ID_STATUSBAR_MOUSEPT, strTitleMousePt, TRUE);
//m_pStatusBarPane 是我自己定义的 CMFCRibbonStatusBarPane*类型变量

然后在CMainFrm类中自定义函数:
public:
void CTinyCADMainFrame::OnUpDateStatusBar( CString str )
{
m_pStatusBarPane->SetText(str);

m_wndRibbonBar.Invalidate();
m_wndRibbonBar.UpdateWindow();
}

最后在view内的OnMouse中调CMainFrm中的函数:
void CTinyCADView::OnMouseMove(UINT nFlags, CPoint point)
{
int nOffsetX = GetScrollPos(SB_HORZ);
int nOffsetY = GetScrollPos(SB_VERT);

CPoint pt(0, 0);
pt.x = point.x + nOffsetX;
pt.y = point.y + nOffsetY;

CString strTmp;
strTmp.Format(_T("%4d, %4d"), pt.x, pt.y);

((CTinyCADMainFrame *)AfxGetMainWnd())->OnUpDateStatusBar(strTmp);

CTinyCADZoomView::OnMouseMove(nFlags, point);
}


出现的现象是: 坐标可以在状态栏显示,但是状态栏似乎不能自动更新, 鼠标移动到那个状态栏区域了就更新下坐标显示, 不能自动更新, 问下这个改怎么解决????
...全文
239 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
向立天 2015-08-28
  • 打赏
  • 举报
回复
您好 我是本版版主 此帖已多日无人关注 请您及时结帖 如您认为问题没有解决可按无满意结帖处理 另外本版设置了疑难问题汇总帖 并已在版面置顶 相关规定其帖子中有说明 您可以根据规定提交您帖子的链接 如您目前不想结帖只需回帖说明 我们会删除此结帖通知 见此回复三日内无回应 我们将强制结帖 相关规定详见界面界面版关于版主结帖工作的具体办法
牛 魔 王 2015-07-27
  • 打赏
  • 举报
回复
m_wndStatusBar.GetElement(0)->SetText(str); m_wndStatusBar.GetElement(0)->Redraw();

15,979

社区成员

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

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