下面的方法可以在第一次按右键并按下“显示时间”时,在鼠标右击处出现系统时间。但在下一次在别处按右键时,还没等我再按下“显示时间”,系统时间就跑到这里来了,这样不合要求。
    能不能在第二次按右键时,先前的系统时间不要移位,还在原来的地方,当按下“显示时间”时,才跑到当前的鼠标的位置,请问这样怎么做呢?
    以下是我做的,哪里要修改?
1.添加一个新菜单:IDR_CONTEXTMENU
 内容为:上下文菜单--显示时间(ID:IDR_TIME_SHOW)
2.在CxxxView类中添加消息:WM_CREATE, WM_CONTEXTMENU, WM_RBUTTONDOWN, WM_TIMER和ID_TIME_SHOW的COMMAND
  还添加CPoint类型变量m_bTime和bool类型变量m_bTime
3.添加代码:
(1)
int CEx3View::OnCreate(LPCREATESTRUCT lpCreateStruct) 
{
if (CView::OnCreate(lpCreateStruct) == -1)
return -1;

// TODO: Add your specialized creation code here
SetTimer(1, 1000, NULL); //加载计时器
if (m_bTime) //设置计时器开关为关闭
return 0;
}(2)
void CEx3View::OnTimer(UINT nIDEvent) 
{
// TODO: Add your message handler code here and/or call default
Invalidate();  //刷新屏幕
CView::OnTimer(nIDEvent);
}(3)//加载上下文菜单
void CEx3View::OnContextMenu(CWnd* pWnd, CPoint point) 
{
// TODO: Add your message handler code here
CMenu Drawmenu;
Drawmenu.LoadMenu(IDR_CONTEXTMENU);
CMenu *pContextmenu = Drawmenu.GetSubMenu(0);
pContextmenu->TrackPopupMenu(TPM_LEFTALIGN|TPM_RIGHTBUTTON, point.x, point.y, this);
Drawmenu.DestroyMenu();
}(4)
void CEx3View::OnTimeShow() 
{
// TODO: Add your command handler code here
m_bTime = true; //改变计时器开关为打开
}(5)
void CEx3View::OnRButtonDown(UINT nFlags, CPoint point) 
{
// TODO: Add your message handler code here and/or call default
m_ConPoint = point; //接收鼠标右击时的坐标
CView::OnRButtonDown(nFlags, point);
}(6)//把时间显示到窗口
void CEx3View::OnDraw(CDC* pDC)
{
CEx3Doc* pDoc = GetDocument();
ASSERT_VALID(pDoc);
// TODO: add draw code for native data here
if (m_bTime)
pDC->TextOut(m_ConPoint.x, m_ConPoint.y, CTime::GetCurrentTime().Format("%H:%M:%S"));
}