如何在状态栏显示当前鼠标位置

本文介绍如何在MFC应用程序的状态栏中显示鼠标当前位置坐标。主要步骤包括:添加命令ID,添加字符串资源,将pane添加到状态栏指示器数组,并实现更新函数以实时更新坐标。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1          如何在状态栏显示当前鼠标位置

1.1      添加一个pane的命令ID

切换到resource view界面上,单击右键,选择resource symbols,在resource symbols的对话框内点击new按钮,输入一个command IDID_INDICATOR_POS

1.2      string table中添加一个string

添加的这个string是为了在上一步骤中添加的pane中显示。

添加的步骤为:在string table中右键->new,选择步骤1.1中添加的paneIDID_INDICATOR_PAGE。确认添加。

1.3      pane添加到statusbarindicator 数组中

添加之后可以是这样的

static UINT BASED_CODE indicators[] =

{

    ID_SEPARATOR,           // status line indicator

    ID_INDICATOR_CAPS,

    ID_INDICATOR_NUM,

    ID_INDICATOR_SCRL,

    ID_INDICATOR_POS,  //添加的

};

做完以上三个步骤,状态栏内的pane就算添加完毕了。

 

1.4      添加处理函数以便可以实时将鼠标位置更新到状态栏内

在视图类(当然也可以在其他类)的消息映射表内添加如下宏:

1ON_UPDATE_COMMAND_UI(ID_INDICATOR_POS, OnUpdatePos)

为视图类添加OnUpdatePos()函数;

2)声明

afx_msg void OnUpdatePos(CCmdUI * pCmUI);

3)实现

void CLearnDisplayBMPView::OnUpdatePage(CCmdUI *pCmdUI)

{

       pCmdUI->Enable();

    pCmdUI->SetText( currentPos );       

}

其中currentPos是定义在CLearnDisplayBMPView一个CString类型的成员变量。

 

经过以上三个步骤之后,只要在ViewMouseMove事件处理函数中改变currentPos,则程序会自动调用OnUpdatePos函数来改变其在状态栏中的显示。

其中MouseMove的事件处理函数的实现如下:

void CLearnDisplayBMPView::OnMouseMove(UINT nFlags, CPoint point)

       {

       currentPos.Format("X:%d,Y:%d",point.x,point.y);

       CFormView::OnMouseMove(nFlags, point);

}

转载于:https://www.cnblogs.com/strinkbug/archive/2007/02/09/645499.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值