API鼠标响应

#include<windows.h>
#include<stdlib.h>
#include<string.h>
void WINAPI CaretPos(HWND hWnd,int nArrayPos,char *cCharBuf,int *xCaret,int *yCaret,int nCharWidth);
long WINAPI WndProc(HWND hWnd,UINT iMessage,UINT wParam,LONG lParam);
BOOL InitWindowsClass(HINSTANCE hInstance);
BOOL InitWindows(HINSTANCE hInstance,int nCmdShow);
HWND hWndMain;

//主函数
int WINAPI WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,LPSTR lpCmdLine,int nCmdShow)
{
 MSG Message;
 if(!InitWindowsClass(hInstance))
  return FALSE;
 if(!InitWindows(hInstance,nCmdShow))
  return FALSE;
 while(GetMessage(&Message,0,0,0))//消息循环
 {
  TranslateMessage(&Message);
  DispatchMessage(&Message);
 }
 return Message.wParam;
}
//消息处理函数
long WINAPI WndProc(HWND hWnd,UINT iMessage,UINT wParam,LONG lParam)
{
 WORD x,y;            //定义表示坐标的变量
 HCURSOR hCursor;//定义表示鼠标光标的变量
 switch(iMessage)   //消息处理
 {
 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_SIZEALL);//加载一个双箭头型鼠标光标
    SetCursor(hCursor);//设置当前鼠标光标为上句中定义的双箭头型鼠标光标
   }
   if(x>=150&&x<=200&&y>=50&&y<=100)
   {
    hCursor=LoadCursor(NULL,IDC_IBEAM);//加载一个I型鼠标光标
    SetCursor(hCursor);//设置当前鼠标为上句中定义的I型鼠标光标
   }
   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));

 }
}

BOOL InitWindowsClass(HINSTANCE hInstance)//初始化窗口类
{
 WNDCLASS WndClass;
 WndClass.cbClsExtra=0;
 WndClass.cbWndExtra=0;
 WndClass.hbrBackground=(HBRUSH)(GetStockObject(WHITE_BRUSH));
 WndClass.hCursor=LoadCursor(NULL,IDC_ARROW);
 WndClass.hIcon=LoadIcon(NULL,"END");
 WndClass.hInstance=hInstance;
 WndClass.lpfnWndProc=WndProc;
 WndClass.lpszClassName="WinMouse";
 WndClass.lpszMenuName=NULL;
 WndClass.style=CS_HREDRAW|CS_VREDRAW;
 return RegisterClass(&WndClass);
}

BOOL InitWindows(HINSTANCE hInstance,int nCmdShow)//初始化窗口
{
 HWND hWnd;
 hWnd=CreateWindow("WinMouse",//生成窗口
  "鼠标及光标形状设置示例",
  WS_OVERLAPPEDWINDOW,
  CW_USEDEFAULT,
  0,
  CW_USEDEFAULT,
  0,
  NULL,
  NULL,
  hInstance,
  NULL);
 if(!hWnd)
  return FALSE;
 hWndMain=hWnd;
 ShowWindow(hWnd,nCmdShow);//显示窗口
 UpdateWindow(hWnd);
 return TRUE;
}

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值