MFC 点击菜单 显示鼠标位置 再点击 取消显示
在MFC中,通过点击菜单中的“显示鼠标位置”,在状态栏中显示出鼠标位置,再点击“显示鼠标位置”,状态栏中取消显示鼠标位置???如何实现?voidCMy3View::OnM...
在MFC中,通过点击菜单中的“显示鼠标位置”,在状态栏中显示出鼠标位置,再点击“显示鼠标位置”,状态栏中取消显示鼠标位置???如何实现?
void CMy3View::OnMouseMove(UINT nFlags, CPoint point)
{
CClientDC dc(this);
CString str;
CMainFrame* pFrame=(CMainFrame*) AfxGetApp()->m_pMainWnd;
CStatusBar* pStatus=&pFrame->m_wndStatusBar;
if(pStatus)
{
str.Format("X=%d,Y=%d",point.x,point.y);
pStatus->SetPaneText(1,str);
}
CSize size=dc.GetTextExtent(str);
int nIndex=pStatus->CommandToIndex(ID_VIEW_MOUSE);
pStatus->SetPaneInfo(nIndex,ID_VIEW_MOUSE,SBPS_NORMAL,size.cx);
pStatus->SetPaneText(nIndex,str);
CView::OnMouseMove(nFlags, point);
}
这是部分代码。
但未点击“显示鼠标位置”时,状态栏中已显示。。。。。
求更改 以及实现再次点击取消显示鼠标位置的代码 展开
void CMy3View::OnMouseMove(UINT nFlags, CPoint point)
{
CClientDC dc(this);
CString str;
CMainFrame* pFrame=(CMainFrame*) AfxGetApp()->m_pMainWnd;
CStatusBar* pStatus=&pFrame->m_wndStatusBar;
if(pStatus)
{
str.Format("X=%d,Y=%d",point.x,point.y);
pStatus->SetPaneText(1,str);
}
CSize size=dc.GetTextExtent(str);
int nIndex=pStatus->CommandToIndex(ID_VIEW_MOUSE);
pStatus->SetPaneInfo(nIndex,ID_VIEW_MOUSE,SBPS_NORMAL,size.cx);
pStatus->SetPaneText(nIndex,str);
CView::OnMouseMove(nFlags, point);
}
这是部分代码。
但未点击“显示鼠标位置”时,状态栏中已显示。。。。。
求更改 以及实现再次点击取消显示鼠标位置的代码 展开
1个回答
展开全部
添加一个BOOL m_bShowMouse;成员变量赋个初始值。
在OnLButtonDown中切换m_bShowMouse的值;
if(m_bShowMouse)
m_bShowMouse = false;
else
m_bShowMouse = true;
3. 在上面的代码中改为
if(m_bShowMouse )
pStatus->SetPaneText(nIndex,str);
else
pStatus->SetPaneText(nIndex,_T(""));
纯手打的,COPY时注意点!
更多追问追答
追问
这是点击鼠标左键显示坐标,
我想问的是如何通过点击菜单栏中的“显示鼠标位置”再显示鼠标坐标。。。。。
(其ID为ID_VIEW_MOUSE)
求问大神!
追答
ID_VIEW_MOUSE如果在资源里有这个菜单项的话,添加个事件响应用向导,如果没有的话,
你要手动加啦,具体位置你应该知道吧!
大致代码如下:
ON_COMMOND(ID_VIEW_MOUSE, OnViewMouse)
函数原型为 afx_msg void OnviewMouse();
把上面第二步的代码放到这个函数实现里!
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询