要求在视图中单击鼠标左键,在单击处输出点击处的坐标,当窗口大小改变或移动时,视图输出不变,我在view类添加一个如下的鼠标左健响应函数,但不知道该怎么样才能实现“当窗口大小改变或移动时,视图输出不变”,请大家指教,小弟在此先谢谢了
void CEx3_4View::OnLButtonDown(UINT nFlags, CPoint point) 
{
// TODO: Add your message handler code here and/or call default

Location=point;
CString str;
str.Format("this=%d,%d",Location.x,Location.y);
CClientDC dc(this);
dc.TextOut(Location.x,Location.y,str); CView::OnLButtonDown(nFlags, point);
}

解决方案 »

  1.   

    把下面这段放到OnPaint函数中
    CString str;
    str.Format("this=%d,%d",Location.x,Location.y);
    dc.TextOut(Location.x,Location.y,str);
      

  2.   

    感谢楼上
    那个OnPaint 函数在哪了啊?是不是也是自己定义一个OnPaint函数?我刚学习vc,不明白,请你说详细点好吗?
      

  3.   

    OnDraw知道吗?放在那里也行。
      

  4.   

    我原来是放在OnDraw函数中的,但是Location的值传不过来, Location还是初始值0;请问这是怎么回事啊?CString str;
    str.Format("this=%d,%d",Location.x,Location.y);
    dc.TextOut(Location.x,Location.y,str);这段代码只能放在OnLButtonDown()函数中才能有正确的预期结果,我不明白为什么?
      

  5.   

    不要把Location定义为局部变量,在view类的头文件里声明它,构造函数里初始化。
      

  6.   

    将Location申明为静态的试试,将输出内容放在OnDraw()函数中输出.
      

  7.   

    //OnPaint() 向导添加 WM_PAINT
    void CExcelView::OnPaint() 
    {
    CPaintDC dc(this); // device context for painting

    // TODO: Add your message handler code here
    CString str;
    str.Format("this=%d,%d",Location.x,Location.y);
    dc.TextOut(Location.x,Location.y,str);
    // Do not call CFormView::OnPaint() for painting messages
    }
      

  8.   

    还是不行,我都晕了,到底怎么回事啊
    楼上几位的意见,我都试了,都不行,都是Location的值传不过去,始终0 
    只能放在OnLButtonDown()函数中才正确,可是放在这个函数中不能重绘窗口
    感谢楼上几位的意见,小弟感激不尽
      

  9.   

    记得要在OnLButtonDown()中给Location 加入Invalidate()Location=point;
    Invalidate();使窗口立即重画,就可以看到输出了
      

  10.   

    记得要在OnLButtonDown()中给Location赋值后,加入Invalidate()函数Location=point;
    Invalidate();使窗口立即重画,就可以看到输出了