您的位置:首页 > 其它

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

2007-02-09 08:17 507 查看

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

1.1 添加一个pane的命令ID

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

1.2 在string table中添加一个string

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

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

1.3 将pane添加到statusbar的indicator 数组中

添加之后可以是这样的

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 添加处理函数以便可以实时将鼠标位置更新到状态栏内

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

(1)ON_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类型的成员变量。

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

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

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

{

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

CFormView::OnMouseMove(nFlags, point);

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: