我想在底部添加一个工具栏,显示我的鼠标位置。
如何添加只读,当我移动鼠标时会不断更新?
我所做的就是创建一个工具栏,它有一个按钮而不是只读样式。
答案 0 :(得分:1)
您需要一个状态栏。见https://msdn.microsoft.com/en-us/library/fha3tfk7.aspx
另见CStatusBar :: SetPaneText():https://msdn.microsoft.com/en-us/library/fha3tfk7.aspx#cstatusbar__setpanetext
答案 1 :(得分: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。