下载 > 资源分类 >  开发技术 >  C > 键盘消息源代码

键盘消息源代码

2004-02-06 上传大小:17KB

实现在窗口中显示按键信息
#include <windows.h>

#include <stdio.h>

//全局变量

RECT rc;			 	//记录滚屏的矩形区域	

int  xChar, yChar;						//文本输入点坐标

WNDCLASSEX  wnd;						//窗口类结构变量

char szAppName[] 
= "键盘消息监视程序";  //窗口类名

//函数声名

LRESULT CALLBACK WndProc (HWND, UINT, WPARAM, LPARAM);

BOOL MyRegisterClass(HINSTANCE hInstance);

BOOL InitInstance(HINSTANCE hInstance,int iCmdShow);

//函数:WinMain

//作用:入口函数

int WINAPI WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance,LPSTR szCmdLine, int iCmdShow)

{

     MSG         msg;

     if(!MyRegisterClass(hInstance))

{

return FALSE;

}

     if(!InitInstance(hInstance,iCmdShow))

{

return FALSE;

}

while (GetMessage (&msg, NULL, 0, 0))

{

TranslateMessage (&msg);

          DispatchMessage (&msg);

     }

     return msg.wParam;

}

//函数:ShowKey

//作用:实现在窗口中显示按键信息

void ShowKey (HWND hwnd, int iType, char *szMessage,WPARAM wParam, LPARAM lParam)

{

     static char *szFormat[2] = { "%-14s %3d  %c  %6u  %4d  %5s  %5s  %6s  %6s",

                            "%-14s  %3d %c  %6u  %4d  %5s  %5s  %6s  %6s" } ;

     char        szBuffer[80];

     HDC       hdc;

     ScrollWindowEx(hwnd, 0, -yChar, &rc, &rc,NULL,NULL,SW_INVALIDATE);

     hdc = GetDC (hwnd);

     SelectObject (hdc, GetStockObject (SYSTEM_FIXED_FONT));

     TextOut (hdc, xChar, rc.bottom - yChar, szBuffer,

              wsprintf (szBuffer, szFormat [iType],

szMessage, //消息

wParam,//虚拟键代码

                        (BYTE) (iType ? wParam :    ),//显示字符值

                        LOWORD (lParam),//重复次数

                        HIWORD (lParam) & 0xFF,//OEM键盘扫描码

//判断是否为增强键盘的扩展键

                        (PSTR) (0x01000000 & lParam ? "是"  : "否"),

//判断是否同时使用了ALT键

                        (PSTR) (0x20000000 & lParam ? "是"  : "否"),

                        (PSTR) (0x40000000 & lParam ? "按下" : "抬起"),//判断前一次击键状态

                        (PSTR) (0x80000000 & lParam ? "按下" : "抬起"))//判断转换状态

);

     ReleaseDC (hwnd, hdc);

     ValidateRect (hwnd, NULL);

}

//函数:WndProc

//作用:处理主窗口的消息

LRESULT CALLBACK WndProc (HWND hwnd, UINT iMsg, WPARAM wParam, LPARAM lParam)

{

     static char szTop[] =

"消息           键  字符  重复数 扫描码 扩展码 ALT 前一状态 转换状态";

     static char szUnd[] =

"_______        __  ____  _____  ______ ______ ___  _______  ______";

     //在窗口中输出文字作为信息标题

HDC         hdc;

     PAINTSTRUCT ps;

     TEXTMETRIC  tm;

     switch (iMsg)

     {

          case WM_CREATE://处理窗口创建的消息

               hdc = GetDC (hwnd);

               //设定字体

SelectObject (hdc, GetStockObject (SYSTEM_FIXED_FONT));

               //检取当前字体的度量数据

GetTextMetrics (hdc, &tm);

xChar = tm.tmAveCharWidth;//保存字体平均宽度

yChar = tm.tmHeight;//保存字体高度

ReleaseDC (hwnd, hdc);

rc.top = 3 * yChar / 2;

return 0;

          case WM_SIZE://处理窗口大小改变的消息

//窗体改变后保存新的滚屏区域右下角坐标

rc.right  = LOWORD (lParam);

rc.bottom = HIWORD (lParam);

UpdateWindow (hwnd);

return 0;

          case WM_PAINT://处理窗口重绘消息

InvalidateRect (hwnd, NULL, TRUE);

hdc = BeginPaint (hwnd, &ps);

SelectObject (hdc, GetStockObject (SYSTEM_FIXED_FONT)) ;

SetBkMode (hdc, TRANSPARENT) ;

TextOut (hdc, xChar, yChar / 2, szTop, (sizeof szTop) - 1) ;

TextOut (hdc, xChar, yChar / 2, szUnd, (sizeof szUnd) - 1) ;

EndPaint (hwnd, &ps);

return 0;

          case WM_KEYDOWN://处理键盘上某一键按下的消息

ShowKey (hwnd, 0, "WM_KEYDOWN", wParam, lParam);

return 0;

          case WM_KEYUP://处理键盘上某一按下键被释放的消息

ShowKey (hwnd, 0, "WM_KEYUP", wParam, lParam);

return 0;

          case WM_CHAR://处理击键过程中产生的非系统键的可见字符消息

ShowKey (hwnd, 1, "WM_CHAR", wParam, lParam);

return 0;

          case WM_DEADCHAR://处理击键过程中产生的非系统键"死字符"消息

ShowKey (hwnd, 1, "WM_DEADCHAR", wParam, lParam);

return 0;

          case WM_SYSKEYDOWN://处理系统键按下的消息

ShowKey (hwnd, 0, "WM_SYSKEYDOWN", wParam, lParam);

break;

          case WM_SYSKEYUP://处理系统键抬起的消息

ShowKey (hwnd, 0, "WM_SYSKEYUP", wParam, lParam);

break;       

          case WM_SYSCHAR://处理系统键可见字符消息

ShowKey (hwnd, 1, "WM_SYSCHAR", wParam, lParam);

break;       

          case WM_SYSDEADCHAR://处理系统键"死字符"消息

ShowKey (hwnd, 1, "WM_SYSDEADCHAR", wParam, lParam);

break;      

          case WM_DESTROY://处理结束应用程序的消息

PostQuitMessage (0);

return 0;

	}

    return DefWindowProc (hwnd, iMsg, wParam, lParam);

}

//函数:MyRegisterClass

//作用:注册窗口类

BOOL MyRegisterClass(HINSTANCE hInstance)

{

wnd.cbSize= sizeof (wnd);

     wnd.style         = CS_HREDRAW | CS_VREDRAW;

     wnd.lpfnWndProc   = WndProc;

     wnd.cbClsExtra    = 0;

     wnd.cbWndExtra    = 0;

     wnd.hInstance     = hInstance;

     wnd.hIcon         = LoadIcon (NULL, IDI_APPLICATION);

     wnd.hCursor       = LoadCursor (NULL, IDC_ARROW);

     wnd.hbrBackground = (HBRUSH) GetStockObject (WHITE_BRUSH);

     wnd.lpszMenuName  = NULL;

     wnd.lpszClassName = szAppName;

wnd.hIconSm       = LoadIcon (NULL, IDI_APPLICATION);

     return RegisterClassEx (&wnd);

}

//函数:InitInstance

//作用:创建主窗口

BOOL InitInstance(HINSTANCE hInstance,int iCmdShow)

{

HWND hwnd;

hwnd = CreateWindow (szAppName, 

"键盘消息监视程序",

WS_OVERLAPPEDWINDOW,

CW_USEDEFAULT,CW_USEDEFAULT,

CW_USEDEFAULT,CW_USEDEFAULT,

NULL,NULL,hInstance,NULL

);

if(!hwnd)

{

return FALSE;

}

ShowWindow (hwnd, iCmdShow);

    	UpdateWindow (hwnd);

return TRUE;

}
...展开收缩
综合评分:4(50位用户评分)
开通VIP C币充值 立即下载

评论共有2条

luo33332016-05-03 15:32:55
谢谢分享,正在学习这个。
yk64762012-05-22 10:07:43
用win32实现 模拟消息循环过程 很好 多谢分享

登录后才能评论

 

相关推荐

VC键盘消息.txt 立即下载
积分/C币:0
mfc键盘消息 立即下载
积分/C币:3
VB Hook捕获鼠标和键盘消息 含代码 立即下载
积分/C币:3
键盘鼠标消息记录回放 立即下载
积分/C币:3
Hook 键盘鼠标消息 立即下载
积分/C币:3
键盘消息检测程序 MFC 立即下载
积分/C币:3
QT键盘和鼠标消息 立即下载
积分/C币:10
EnregisterKey 键盘消息监听 立即下载
积分/C币:3
VB 键盘ASCII码输出 asc码测试 键盘消息使用 立即下载
积分/C币:3
C#157在消息对话框中显示帮助按钮 源代码 立即下载
积分/C币:3
C#158在消息框中换行输出信息 源代码 立即下载
积分/C币:3
Android页面跳转并调出消息发送窗口源代码 立即下载
积分/C币:3
在Visual C++中利用自定义消息实现线程间通讯C++源代码程序小实例 立即下载
积分/C币:3
局域网消息传送小工具与源代码(409KB) 立即下载
积分/C币:3
MFC消息框设置演示,源代码加整个工程 立即下载
积分/C币:3
基于Linux消息队列的简易聊天室(C语言)(附源代码) 立即下载
积分/C币:5
VB消息窗口源代码 立即下载
积分/C币:3
WinCE/Mobile 下的自定义消息处理方法 -- 源代码 立即下载
积分/C币:3
金山卫士开源代码----消息机制浅析 立即下载
积分/C币:3
《Visual Basic.NET精彩编程百例》源代码:2_消息提示 立即下载
积分/C币:3

热门专辑

VIP会员动态

关闭
img

spring mvc+mybatis+mysql+maven+bootstrap 整合实现增删查改简单实例.zip

资源所需积分/C币 当前拥有积分 当前拥有C币
5 0 0
为了良好体验,不建议使用迅雷下载
确认下载
img

键盘消息源代码

会员到期时间: 剩余下载个数: 剩余C币:593 剩余积分:0
为了良好体验,不建议使用迅雷下载
VIP下载
您今日下载次数已达上限(为了良好下载体验及使用,每位用户24小时之内最多可下载20个资源)

积分不足!

资源所需积分/C币 当前拥有积分
您可以选择
开通VIP
4000万
程序员的必选
600万
绿色安全资源
现在开通
立省522元
或者
购买C币兑换积分 C币抽奖
img

资源所需积分/C币 当前拥有积分 当前拥有C币
5 4 45
(仅够下载10个资源)
为了良好体验,不建议使用迅雷下载
确认下载
img

资源所需积分/C币 当前拥有积分 当前拥有C币
5 0 0
为了良好体验,不建议使用迅雷下载
C币充值 开通VIP
img

资源所需积分/C币 当前拥有积分 当前拥有C币
5 4 45
您的积分不足,将扣除 10 C币
为了良好体验,不建议使用迅雷下载
确认下载
下载

兑换成功

你当前的下载分为234开始下载资源
你还不是VIP会员
开通VIP会员权限,免积分下载
立即开通

你下载资源过于频繁,请输入验证码

您因违反CSDN下载频道规则而被锁定帐户,如有疑问,请联络:webmaster@csdn.net!

举报

若举报审核通过,可奖励5下载分

  • 举报人:
  • 被举报人:
  • 举报的资源分:
  • *类型:
  • *详细原因: