2017-01-16 85 views
0

我想在底部添加一个工具栏来显示我的鼠标位置。MFC如何添加工具栏以显示更改的文本

如何添加一个只读的,当我移动鼠标时会不断更新?

我所做的只是制作一个工具栏,它有一个按钮而不是只读样式。

回答

0

我想补充,你不应该推到状态栏的信息。让主消息泵在空闲时处理它。在您的子/主派生框架中添加一个UI处理程序。让它从视图中提取信息。

ON_UPDATE_COMMAND_UI(ID_STATUSBAR_LABEL, &OnUpdateStatusText) 
... 
void CADFrame::OnUpdateStatusText(CCmdUI *pCmdUI) 
{ 
    pCmdUI->Enable(); 
    CADView* pView= dynamic_cast< CADView* >(GetActiveView()); 
    ASSERT_VALID(pView); 
    pCmdUI->SetText(pView->GetStatusInfo()); 
... 
} 

当您使用鼠标位置时,您将在视图中存储最后一个鼠标位置以进行渐进式计算。因此,在你看到的东西像,(这取决于你所要做的):

const CString& CADView::GetStatusInfo() 
{ 
    if(bStatusMouseChanged) 
    { 
     strStatus.Format(_T(" x: %.4f y: %.4f") 
      ,(double)(ptLastMouse.x - offsetx)/winScale 
      ,(double)(ptLastMouse.y - offsety)/winScale 
     ); 
     bStatusMouseChanged= false; 
    } 
    return strStatus; 
} 

通过保持一个标志,你只需要建立字符串,当你需要。从shameless promo of my project