📄 kb.c
字号:
#include <stdio.h>
#include <time.h>
#include <minigui/common.h>
#include <minigui/minigui.h>
#include <minigui/gdi.h>
#include <minigui/window.h>
#include <minigui/control.h>
#include <minigui/mgext.h>
#include "../common.h"
//获得焦点的编辑框句柄
//HWND InputEdit;
//键盘功能键键值
#define IDC_KB 100
#define IDK_CAPS 27
#define IDK_LSHIFT 40
#define IDK_RSHIFT 51
#define IDK_LCTRL 52
#define IDK_LALT 53
#define IDK_RALT 55
#define IDK_RCTRL 56
//记录键盘各行按键个数
#define KBL1 13
#define KBL2 14
#define KBL3 13
#define KBL4 12
#define KBL5 6
static long int KState = 0, CAPSState = 0;
static BOOL ShiftFlag = 0;
//键盘显示内容
static const char* caption[] =
{
" ` ", " 1 ", " 2 ", " 3 ", " 4 ", " 5 ", " 6 ", " 7 ", " 8 ", " 9 ", " 0 ", " - ", " = ",
" Tab ", " q ", " w ", " e ", " r ", " t ", " y ", " u ", " i ", " o ", " p " , " [ ", " ] ", " \\ ",
" Caps " ," a ", " s ", " d ", " f ", " g ", " h ", " j ", " k ", " l ", " ; ", " \' ", " Enter ",
" Shift ", " z ", " x ", " c ", " v ", " b ", " n ", " m ", " , ", " . ", " / ", " Shift ",
" Ctrl ", " Alt ", " Space ", " Alt ", " Ctrl ", " Backspace "
};
//按SHIFT后键盘显示内容
static const char* caption1[] =
{
" ~ ", " ! ", " @ ", " # ", " $ ", " % ", " ^ ", " & ", " * ", " ( ", " ) ", " _ ", " + ",
" Tab ", " Q", " W", " E", " R", " T", " Y", " U", " I", " O", " P" , " { ", " } ", " | ",
" Caps " ," A", " S", " D", " F", " G", " H", " J", " K", " L", " : ", " \" ", " Enter ",
" Shift ", " Z", " X", " C", " V", " B", " N", " M", " < ", " > ", " ? ", " Shift ",
" Ctrl ", " Alt ", " Space ", " Alt ", " Ctrl ", " Backspace "
};
//按CAPS后键盘显示内容
static const char* caption2[] =
{
" ` ", " 1 ", " 2 ", " 3 ", " 4 ", " 5 ", " 6 ", " 7 ", " 8 ", " 9 ", " 0 ", " - ", " = ",
" Tab ", " Q", " W", " E", " R", " T", " Y", " U", " I", " O", " P" , " [ ", " ] ", " \\ ",
" Caps " ," A", " S", " D", " F", " G", " H", " J", " K", " L", " ; ", " \' ", " Enter ",
" Shift ", " Z", " X", " C", " V", " B", " N", " M", " , ", " . ", " / ", " Shift ",
" Ctrl ", " Alt ", " Space ", " Alt ", " Ctrl ", " Backspace "
};
//CAPS和SHIFT键都触发后键盘显示内容
static const char* caption3[] =
{
" ~ ", " ! ", " @ ", " # ", " $ ", " % ", " ^ ", " & ", " * ", " ( ", " ) ", " _ ", " + ",
" Tab ", " q ", " w ", " e ", " r ", " t ", " y ", " u ", " i ", " o ", " p " , " { ", " } ", " | ",
" Caps " ," a ", " s ", " d ", " f ", " g ", " h ", " j ", " k ", " l ", " : ", " \" ", " Enter ",
" Shift ", " z ", " x ", " c ", " v ", " b ", " n ", " m ", " < ", " > ", " ? ", " Shift ",
" Ctrl ", " Alt ", " Space ", " Alt ", " Ctrl ", " Backspace "
};
//按键ID
static const int KeyV[] =
{
41, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13,
15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 43,
58, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 28,
42, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54,
29, 56, 57, 100, 97, 14
};
//创建CAPS和SHIFT键都触发后的键盘
static void CreateKbCAPSu (HWND hWnd)
{
HWND cb1, cb2, cb3, cb4, cb5;
COOLBARITEMINFO item;
int i;
//创建5行coolbar控件
cb1 = CreateWindow (CTRL_COOLBAR,
"",
WS_CHILD | WS_VISIBLE | CBS_BMP_16X16,
IDC_KB,
0, 0, 230, 16,
hWnd,
0);
cb2 = CreateWindow (CTRL_COOLBAR,
"",
WS_CHILD | WS_VISIBLE,
IDC_KB,
0, 22, 230, 16,
hWnd,
0);
cb3 = CreateWindow (CTRL_COOLBAR,
"",
WS_CHILD | WS_VISIBLE,
IDC_KB,
0, 44, 230, 16,
hWnd,
0);
cb4 = CreateWindow (CTRL_COOLBAR,
"",
WS_CHILD | WS_VISIBLE,
IDC_KB,
0, 66, 230, 16,
hWnd,
0);
cb5 = CreateWindow (CTRL_COOLBAR,
"",
WS_CHILD | WS_VISIBLE,
IDC_KB,
0, 88, 230, 16,
hWnd,
0);
item.ItemType = TYPE_TEXTITEM;
item.Bmp = NULL;
item.dwAddData = 0;
item.ItemHint = NULL;
//在coolbar控件中添加按键
for (i = 0; i < KBL1; i++)
{
item.insPos = i;
item.id = i;
item.Caption = caption3[i];
SendMessage (cb1, CBM_ADDITEM, 0, (LPARAM)&item);
}
for (i = KBL1; i < KBL1+KBL2; i++)
{
item.insPos = i;
item.id = i;
item.Caption = caption3[i];
SendMessage (cb2, CBM_ADDITEM, 0, (LPARAM)&item);
}
for (i = KBL1+KBL2; i < KBL1+KBL2+KBL3; i++)
{
item.insPos = i;
item.id = i;
item.Caption = caption3[i];
SendMessage (cb3, CBM_ADDITEM, 0, (LPARAM)&item);
}
for (i = KBL1+KBL2+KBL3; i < KBL1+KBL2+KBL3+KBL4; i++)
{
item.insPos = i;
item.id = i;
item.Caption = caption3[i];
SendMessage (cb4, CBM_ADDITEM, 0, (LPARAM)&item);
}
for (i = KBL1+KBL2+KBL3+KBL4; i < KBL1+KBL2+KBL3+KBL4+KBL5; i++)
{
item.insPos = i;
item.id = i;
item.Caption = caption3[i];
SendMessage (cb5, CBM_ADDITEM, 0, (LPARAM)&item);
}
}
//创建CAPS键触发后的键盘
static void CreateKbCAPS (HWND hWnd)
{
HWND cb1, cb2, cb3, cb4, cb5;
COOLBARITEMINFO item;
int i;
cb1 = CreateWindow (CTRL_COOLBAR,
"",
WS_CHILD | WS_VISIBLE | CBS_BMP_16X16,
IDC_KB,
0, 0, 230, 16,
hWnd,
0);
cb2 = CreateWindow (CTRL_COOLBAR,
"",
WS_CHILD | WS_VISIBLE,
IDC_KB,
0, 22, 230, 16,
hWnd,
0);
cb3 = CreateWindow (CTRL_COOLBAR,
"",
WS_CHILD | WS_VISIBLE,
IDC_KB,
0, 44, 230, 16,
hWnd,
0);
cb4 = CreateWindow (CTRL_COOLBAR,
"",
WS_CHILD | WS_VISIBLE,
IDC_KB,
0, 66, 230, 16,
hWnd,
0);
cb5 = CreateWindow (CTRL_COOLBAR,
"",
WS_CHILD | WS_VISIBLE,
IDC_KB,
0, 88, 230, 16,
hWnd,
0);
item.ItemType = TYPE_TEXTITEM;
item.Bmp = NULL;
item.dwAddData = 0;
item.ItemHint = NULL;
for (i = 0; i < KBL1; i++)
{
item.insPos = i;
item.id = i;
item.Caption = caption2[i];
SendMessage (cb1, CBM_ADDITEM, 0, (LPARAM)&item);
}
for (i = KBL1; i < KBL1+KBL2; i++)
{
item.insPos = i;
item.id = i;
item.Caption = caption2[i];
SendMessage (cb2, CBM_ADDITEM, 0, (LPARAM)&item);
}
for (i = KBL1+KBL2; i < KBL1+KBL2+KBL3; i++)
{
item.insPos = i;
item.id = i;
item.Caption = caption2[i];
SendMessage (cb3, CBM_ADDITEM, 0, (LPARAM)&item);
}
for (i = KBL1+KBL2+KBL3; i < KBL1+KBL2+KBL3+KBL4; i++)
{
item.insPos = i;
item.id = i;
item.Caption = caption2[i];
SendMessage (cb4, CBM_ADDITEM, 0, (LPARAM)&item);
}
for (i = KBL1+KBL2+KBL3+KBL4; i < KBL1+KBL2+KBL3+KBL4+KBL5; i++)
{
item.insPos = i;
item.id = i;
item.Caption = caption2[i];
SendMessage (cb5, CBM_ADDITEM, 0, (LPARAM)&item);
}
}
//创建SHIFT键触发后的键盘
static void CreateKbu (HWND hWnd)
{
HWND cb1, cb2, cb3, cb4, cb5;
COOLBARITEMINFO item;
int i;
cb1 = CreateWindow (CTRL_COOLBAR,
"",
WS_CHILD | WS_VISIBLE | CBS_BMP_16X16,
IDC_KB,
0, 0, 230, 16,
hWnd,
0);
cb2 = CreateWindow (CTRL_COOLBAR,
"",
WS_CHILD | WS_VISIBLE,
IDC_KB,
0, 22, 230, 16,
hWnd,
0);
cb3 = CreateWindow (CTRL_COOLBAR,
"",
WS_CHILD | WS_VISIBLE,
IDC_KB,
0, 44, 230, 16,
hWnd,
0);
cb4 = CreateWindow (CTRL_COOLBAR,
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -