//键盘ASCII码查询器
//倪梓鹏 2003/5/9
#include <windows.h>
#include "resource.h"
//Download by http://www.codefans.net
//----------------------------------------------------------------
static TCHAR szAppName[] = TEXT ("ASCII") ;
LONG wpWndProc;
HWND hDlg;
//----------------------------------------------------------------
LRESULT APIENTRY WndProc (HWND, UINT, WPARAM, LPARAM) ;
LRESULT APIENTRY EditSubclassProc( HWND, UINT, WPARAM, LPARAM ) ;
int WINAPI WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance,
PSTR szCmdLine, int iCmdShow)
{
HWND hwnd ;
MSG msg ;
WNDCLASS wndclass ;
wndclass.style = CS_HREDRAW | CS_VREDRAW ;
wndclass.lpfnWndProc = WndProc;
wndclass.cbClsExtra = 0 ;
wndclass.cbWndExtra = DLGWINDOWEXTRA ;
wndclass.hInstance = hInstance ;
wndclass.hIcon = LoadIcon (hInstance, szAppName);
wndclass.hCursor = LoadCursor (NULL, IDC_ARROW) ;
wndclass.hbrBackground = (HBRUSH) (COLOR_BTNFACE+1) ;
wndclass.lpszMenuName = szAppName ;
wndclass.lpszClassName = szAppName ;
if (!RegisterClass (&wndclass))
{
MessageBox (NULL, TEXT ("This program requires Windows NT!"),
szAppName, MB_ICONERROR) ;
return 0 ;
}
hwnd = CreateDialog(hInstance,szAppName,NULL,(DLGPROC)WndProc);
ShowWindow (hwnd, iCmdShow) ;
UpdateWindow (hwnd) ;
while (GetMessage (&msg, NULL, 0, 0) )
{
if (!IsWindow(hwnd) || !IsDialogMessage(hwnd, &msg))
{
TranslateMessage (&msg) ;
DispatchMessage (&msg) ;
}
}
return msg.wParam ;
}
LRESULT APIENTRY WndProc (HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
{
static HINSTANCE hInstance;
switch (message)
{
case WM_INITDIALOG:
hDlg = hwnd;
SetFocus(GetDlgItem(hwnd,IDEXIT));
wpWndProc = SetWindowLong( GetDlgItem(hwnd,IDC_EDITIN), GWL_WNDPROC, (LONG) EditSubclassProc);
return TRUE;
case WM_COMMAND:
switch(LOWORD(wParam))
{
case IDEXIT:
DestroyWindow(hwnd);
break;
}
return 0;
case WM_DESTROY:
PostQuitMessage (0) ;
return 0 ;
}
return DefWindowProc (hwnd, message, wParam, lParam) ;
}
LRESULT APIENTRY EditSubclassProc( HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
{
TCHAR szKeyName[32] = " ";
TCHAR szBuffer[256] = " " ;
HWND hEditIn, hEditOut;
hEditIn = GetDlgItem(hwnd,IDC_EDITIN);
hEditOut = GetDlgItem(hwnd,IDC_EDITOUT);
if( WM_KEYDOWN == uMsg || WM_SYSKEYDOWN== uMsg || WM_SYSCHAR == uMsg)
//WM_KEYDOWN和WM_SYSKEYDOWN消息产生了字符信息,先处理WM_CHAR不会处理的信息
{
GetKeyNameText(lParam,szKeyName,sizeof (szKeyName) / sizeof (TCHAR)) ;
SetDlgItemText(hDlg,IDC_EDITIN,szKeyName);
wsprintf(szBuffer,"%d",wParam);
SetDlgItemText(hDlg,IDC_EDITOUT, szBuffer);
}
if(WM_CHAR == uMsg||WM_SYSCHAR == uMsg)
{
wsprintf(szBuffer,"%c",wParam);
SetDlgItemText(hDlg,IDC_EDITIN, szBuffer);//显示输入的按键
wsprintf(szBuffer, "%d", wParam);
SetDlgItemText(hDlg,IDC_EDITOUT, szBuffer);//显示输入的按键的ASCII码
return TRUE;
}
if(wParam == VK_RETURN || wParam == VK_BACK || wParam == VK_ESCAPE)//处理Enter等其他键
{
SetDlgItemText(hDlg,IDC_EDITIN,"");
GetKeyNameText(lParam,szKeyName,sizeof (szKeyName) / sizeof (TCHAR)) ;
SetDlgItemText(hDlg,IDC_EDITIN,szKeyName);
wsprintf(szBuffer,"%d",wParam);
SetDlgItemText(hDlg,IDC_EDITOUT, szBuffer);
return TRUE;
}
return CallWindowProc((WNDPROC)wpWndProc, hwnd, uMsg,
wParam, lParam);
}
VC++根据键盘按键显示ASCII码
5星 · 超过95%的资源 需积分: 11 6 浏览量
2010-01-17
07:43:24
上传
评论
收藏 5KB RAR 举报
陪我看一起看海吧
- 粉丝: 1
- 资源: 14
最新资源
- Sora AI Video Preview Case Sora AI 视频模版项目,React全栈快速部署.zip
- Foobar2000 中文完全版
- 基于JAVA web 的酒店管理系统的设计与实现,MySQL、MVC
- cdf6be7eb5ee2c1204e6de3b08a441d2.jpg
- 基于web的停车场管理系统的设计与实现、MVC、前台jQuery、后台JDBC,JSP技术,Tomcat、JavaBean
- 基于STM32和QT平台的农业大棚远程监控系统设计.pdf
- 毕业设计-基于SpringBoot、JPA、Thmleaf实现的旅游网站管理系统
- index.wxml
- 基于Git的软件项目管理配置方法及应用实践.pdf
- 基于R语言的公立医院学科绩效评估数据可视化研究.pdf
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈