::SendMessage(hWnd, WM_LBUTTON, 0, MAKEDWORD(y, x));

解决方案 »

  1.   

    打错了,应该是:
    ::SendMessage(hWnd, WM_LBUTTONDOWN, 0, MAKEWPARAM(x, y));
      

  2.   

    这样的话可以么?
    为什么我一点鼠标就出错呢?
    接受消息的窗口用的参数是CPoint啊,这样直接合成一个WPARAM能行么?
      

  3.   

    鼠标down和up的消息一般是一起发送的,除非你有特别的要求: pWnd->SendMessage(WM_LBUTTONDOWN, 1, (LPARAM)MAKELONG(point.x, point.y));
    pWnd->SendMessage(WM_LBUTTONUP, 0, (LPARAM)MAKELONG(point.x, point.y));再看一个msdn吧:WM_LBUTTONDOWN 
    fwKeys = wParam;        // key flags 
    xPos = LOWORD(lParam);  // horizontal position of cursor 
    yPos = HIWORD(lParam);  // vertical position of cursor DWORD MAKELONG(
      WORD wLow,  // low-order word of long value
      WORD wHigh  // high-order word of long value
    );
      
      

  4.   

    为什么我一用就出
    Unhandled Exception in xxxxx (MFC42D.DLL):0xC0000005:Access Violation
      

  5.   

    hmm……我好象明白我的问题了。
    我用一个把一个自定义窗口类的定义放到dll文件里了。
    然后我调用它的SendMessage了。
    是不是dll的原因?
      

  6.   

    这要看Sendmessage()在哪个函数内?
    Setcapture()
    Getcapture()
    试一试!