在OnMouseMove里判断所在的区域,然后用SetCursor来设所。

解决方案 »

  1.   

    响应WM_SETCURSOR消息,在OnSetCursor函数中,用GetCursorPoint取得当前鼠标位置(注意返回的是Screen坐标),判断是否在特定区域中,然后用SetCursor设置响应的光标即可。
      

  2.   

    case WM_MOUSEMOVE: //处理鼠标移动消息
    x=LOWORD(lParam); //取得鼠标所在位置在工作区中的坐标值
    y=HIWORD(lParam);
    //当在左上角为(50,50),右下角为(400,300)确定的矩形区域中时,该变鼠标的形状
    if(x>=50&&x<=400&&y>=50&&y<=300)  
    {
    if(x>=50&&x<=100&&y>=50&&y<=100)
    {
    hCursor=LoadCursor(NULL,IDC_CROSS); //加载一个"十"字型鼠标
    SetCursor(hCursor); //设置当前鼠标为上句中定义的"十"字型鼠标
    }
    if(x>=100&&x<=150&&y>=50&&y<=100)
    {
    hCursor=LoadCursor(NULL,IDC_SIZE); //加载一个双箭头型鼠标
    SetCursor(hCursor); //设置当前鼠标为上句中定义的双箭头型鼠标
    }
    if(x>=150&&x<=200&&y>=50&&y<=100)
    {
    hCursor=LoadCursor(NULL,IDC_SIZE); //加载一个双箭头型鼠标
    SetCursor(hCursor); //设置当前鼠标为上句中定义的双箭头型鼠标
    }
    if(x>=50&&x<=100&&y>=100&&y<=150)
    {
    //加载一个用于改变窗口对角线大小的双箭头型鼠标
    hCursor=LoadCursor(NULL,IDC_SIZENESW);
    SetCursor(hCursor); //设置当前鼠标为上句中定义的鼠标
    }
    if(x>=100&&x<=250&&y>=100&&y<=150)
    {
    //加载鼠标为改变窗口上下大小的双箭头型鼠标
    hCursor=LoadCursor(NULL,IDC_SIZENS); 
    SetCursor(hCursor);
    }
    if(x>=250&&x<=400&&y>=100&&y<=150)
    {
    //加载一个用于改变窗口对角线大小的双箭头型鼠标
    hCursor=LoadCursor(NULL,IDC_SIZENWSE); 
    SetCursor(hCursor);
    }
    if(x>=50&&x<=100&&y>=150&&y<=300)
    {
    //加载一个用于改变窗体左右方向上大小的双箭头型鼠标
    hCursor=LoadCursor(NULL,IDC_SIZEWE);
    SetCursor(hCursor);
    }
    if(x>=100&&x<=250&&y>=150&&y<=300)
    {
    //定义一个方向向上的箭头型鼠标
    hCursor=LoadCursor(NULL,IDC_UPARROW);
    SetCursor(hCursor);
    }
    if(x>=250&&x<=400&&y>=150&&y<=300)
    { //加载一个用于表示系统忙的鼠标
    hCursor=LoadCursor(NULL,IDC_WAIT);
    SetCursor(hCursor);
    }
    }
    else
    {
    hCursor=LoadCursor(NULL,IDC_ARROW); //其他区域设置成普通的箭头型鼠标
    SetCursor(hCursor);
    }
    return 0;
    case WM_DESTROY: //处理结束应用程序消息
    PostQuitMessage(0); //结束应用程序
    return 0;
    default: //其他消息处理程序
    return(DefWindowProc(hWnd,iMessage,wParam,lParam)) ;这个够详细了吧?
    给分