键盘和鼠标的操作

#include<windows.h>
#include"string.h"
#define  BufSize 30

 
//声明WndProc()函数
LRESULT CALLBACK WndProc(
 HWND hwnd,UINT message,
 WPARAM wParam,
 LPARAM lParam);
//编写WinMain()主函数

int WINAPI WinMain(HINSTANCE hInstance,
     HINSTANCE hPrevInstance,
     LPSTR lpCmdLine,
     int nCmdShow)
{

 WNDCLASS wndclass;         //定义窗口类结构变量
 HWND hwnd;            //定义窗口句柄
 MSG msg;           //定义消息结构变量
 char lpszClassName[]="自己创建的窗口";

 //设计窗口类型
 wndclass.style = CS_HREDRAW|CS_VREDRAW;      //改变窗口大小则重画
 wndclass.lpfnWndProc = WndProc;       //窗口函数为WndProc
 wndclass.cbClsExtra = 0;         //窗口类无扩展
 wndclass.cbWndExtra = 0;        //窗口实例无扩展
 wndclass.hInstance = hInstance;        //注册窗口类实例句柄
 wndclass.hIcon = LoadIcon(NULL,IDI_APPLICATION);   //用箭头光标
 wndclass.hCursor = LoadCursor(NULL,IDC_ARROW); 
 wndclass.hbrBackground = (HBRUSH)GetStockObject(WHITE_BRUSH); //背景为白色
 wndclass.lpszMenuName = NULL;        //窗口默认无菜单
 wndclass.lpszClassName =lpszClassName;
 //注册窗口类型
 if(! RegisterClass(&wndclass))
 return FALSE;
 
 //创建窗口
 hwnd = CreateWindow(lpszClassName,
   "window窗口创建",
   WS_OVERLAPPEDWINDOW,
   CW_USEDEFAULT, CW_USEDEFAULT, 
   CW_USEDEFAULT, CW_USEDEFAULT,
   NULL,
   NULL,
   hInstance,
   NULL);
 //显示并刷新窗口
 ShowWindow(hwnd,nCmdShow);        //显示窗口
 UpdateWindow (hwnd);          //更新窗口的客户区
 //消息循环
 while(GetMessage (&msg,NULL,0,0)) 
 {
  TranslateMessage (&msg);         //键盘消息转换
  DispatchMessage (&msg);         //派送消息给窗口函数
 }
 return msg.wParam;           //返回退出值
}
LRESULT CALLBACK WndProc(HWND hWnd, UINT message,
                         UINT wParam,
                         LONG lParam)
  {
 
 static   char  buffer[BufSize];
 static   int  nNumChar  =   0 ;
 static   int  i  =   0 ;
 
    HDC hdc;
    PAINTSTRUCT ps;
    HCURSOR hCur;
     switch (message)
      {
        case  WM_CHAR: // 处理非系统键的消息
          if (wParam  ==  VK_BACK) // 按下退格键
            {
             if (nNumChar  ==   0 )
              {
                MessageBox(hWnd,  " 没有字符可以删除! " , NULL, MB_OK);
    }
             else
               {
                 -- nNumChar;
                 // 此函数刷新用户区,会产生PAINT消息
                 InvalidateRect(hWnd, NULL, TRUE);
    }
             break ;
        }
         if (nNumChar  >=  BufSize) // 字符超过缓冲区大小
            {
            MessageBox(hWnd,  " 缓冲区已满!删除字符请用退格键 " , NULL, MB_OK);
             break ;
   }
       buffer[nNumChar ++ ]  = (unsigned  char)wParam;
        InvalidateRect(hWnd, NULL, TRUE);
         break ;
       
     case  WM_PAINT: // 将处理过的字符输出
         hdc  =  BeginPaint(hWnd,  & ps);
         // 调整坐标使字出现在鼠标上方
      
   TextOut(hdc, 20 , 40 , buffer, nNumChar);
        EndPaint(hWnd,  & ps);
         break ;

     case  WM_DESTROY:
        PostQuitMessage( 0 );
         return   0 ;
     default :
         return  (DefWindowProc(hWnd, message, wParam, lParam));
    }
     return   0 ;
}

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值