我想记录在客户区每一次单击时鼠标位置的坐标值,但是却只能得到第一次单击时的值,后面所有单击的都得不到。但是如果每单击一次后切换到另一个窗口再切换回来单击的话就可以得到(比如单击一次后按一下ALT+TAB键或者把窗口还原或最小化后再放大就可以),我后面认为这是由于没有得到当前窗口的原因。我就在OnButtonDown()里面加了AfxGetMainWnd()->UpdateWindow(),但仍然一样!但将UpdateWindow()改为RedrawWindow()或Invalidate()的话就可以得到每次单击的位置,但同时产生一个小问题,那就是每次重绘屏幕出现了闪烁的现象!请问各位高手如何解决这个问题呢?谢谢!

解决方案 »

  1.   

    你是在OnLButtonDown中响应的么?
    应该是没有问题的啊
    你看看是不是因为你注释掉了这个函数中对基类的OnLButtonDown的调用?
      

  2.   

    你把OnLButtonDown()事件中的过程放到PreTranslateMessage()中!,我以前也遇到过这样的问题,就是这么解决的.
    BOOL C***View::PreTranslateMessage(MSG* pMsg) 
    {
    // TODO: Add your specialized code here and/or call the base class
    if(pMsg->message == WM_LBUTTONDOWN)
    {
                    CPoint pnt = pMsg->pt;
                     ...........
             }
             return CView::PreTranslateMessage(pMsg);
    }