case WM_MOUSEMOVE: 
hdc=GetDC(hwnd);
GetCursorPos(&pt);
sprintf(str,"%d,%d",pt.x,pt.y);    
TextOut(hdc,10,10,str,strlen(str)); 
ReleaseDC(hwnd,hdc);
break;这个鼠标显示的位置是相对桌面左上角的,问下怎么显示设置相对于客户区的坐标?

解决方案 »

  1.   

    case WM_MOUSEMOVE: 
    hdc=GetDC(hwnd);
    GetCursorPos(&pt);
    ScreenToClient(&pt); //这里设置.
    sprintf(str,"%d,%d",pt.x,pt.y);    
    TextOut(hdc,10,10,str,strlen(str)); 
    ReleaseDC(hwnd,hdc);
    break;其实直接可以直接得出客户区的坐标,像这样
    case WM_MOUSEMOVE:
    {
     POINT pt;
     pt.x=LOWORD(lParam);
     pt.y=HIWORD(lParam);
     //Ok!Do anything you want.
     }
    break;
      

  2.   


    case WM_MOUSEMOVE: 
    hdc=GetDC(hwnd);
    GetCursorPos(&pt);
    ScreenToClient(hwnd,&pt); //这里设置 相对于客户区的坐标
    sprintf(str,"%d,%d",pt.x,pt.y);    
    TextOut(hdc,10,10,str,strlen(str)); 
    ReleaseDC(hwnd,hdc);
    break;  这样是可以的下面一种
    case WM_MOUSEMOVE: 
       POINT pt; 
       pt.x=LOWORD(lParam); 
       pt.y=HIWORD(lParam);
       sprintf(str,"%d,%d",pt.x,pt.y);    
       TextOut(hdc,10,10,str,strlen(str)); 
       break;
    没有反应呢
      

  3.   

    ScreenToClient将屏幕坐标转化成客户窗口坐标