📄 kb.c
字号:
"",
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 = caption1[i];
SendMessage (cb1, CBM_ADDITEM, 0, (LPARAM)&item);
}
for (i = KBL1; i < KBL1+KBL2; i++)
{
item.insPos = i;
item.id = i;
item.Caption = caption1[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 = caption1[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 = caption1[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 = caption1[i];
SendMessage (cb5, CBM_ADDITEM, 0, (LPARAM)&item);
}
}
//创建CAPS和SHIFT键都未触发的键盘
static void CreateKbd (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 = caption[i];
SendMessage (cb1, CBM_ADDITEM, 0, (LPARAM)&item);
}
for (i = KBL1; i < KBL1+KBL2; i++)
{
item.insPos = i;
item.id = i;
item.Caption = caption[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 = caption[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 = caption[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 = caption[i];
SendMessage (cb5, CBM_ADDITEM, 0, (LPARAM)&item);
}
}
/********************************************************************************************
* Function Name: KeyBoardPro()
* Function Discription: Processing function of the KeyBoard window
********************************************************************************************/
static int KeyBoardPro (HWND hWnd, int message, WPARAM wParam, LPARAM lParam)
{
HWND Kbs,Kbb;
static char Text[100],PhoneNum[40];
switch (message)
{
case MSG_CREATE:
//创建键盘控件
CreateKbd (hWnd);
break;
case MSG_COMMAND: //键盘事件触发
{
int id = LOWORD (wParam);
int keyid = HIWORD (wParam);
int KeyValue = KeyV[keyid];
if (id == IDC_KB)
{
if (keyid == IDK_CAPS)
{
//CAPS键按下时,用CAPSState记录CAPS状态
if (CAPSState == 0)
{
CAPSState = KS_CAPSLOCK;
KState = KState | CAPSState;
DestroyAllControls (hWnd);
CreateKbCAPS (hWnd);
}
else
{
CAPSState = 0;
KState = KState & 0x11111011;
DestroyAllControls (hWnd);
CreateKbd (hWnd);
}
}
else if (keyid == IDK_LSHIFT || keyid == IDK_RSHIFT)
{
//SHIFT键按下时,用ShiftFlag记录SHIFT状态
if (ShiftFlag == 0)
{
ShiftFlag = 1;
if (CAPSState == 0)
{
KState = KState | KS_LEFTSHIFT;
DestroyAllControls (hWnd);
CreateKbu (hWnd);
}
else
{
KState = KState | KS_LEFTSHIFT;
DestroyAllControls (hWnd);
CreateKbCAPSu (hWnd);
}
}
}
else if (keyid == IDK_LCTRL || keyid == IDK_RCTRL)
{
KState = KState | KS_LEFTCTRL;
}
else
{
//其它按键触发时,发送键盘按键消息
SendMessage (InputEdit, MSG_KEYDOWN, KeyValue, KState);
if (ShiftFlag == 1)
{
//恢复键盘大小写锁定状态
if(CAPSState == 0)
{
DestroyAllControls (hWnd);
CreateKbd (hWnd);
}
else
{
DestroyAllControls (hWnd);
CreateKbCAPS (hWnd);
}
ShiftFlag = 0;
}
KState = 0 | CAPSState;
}
}
}
break;
//用于在销毁时退出的代码,重要不然会死掉。
case MSG_DESTROY:
DestroyAllControls (hWnd);
return 0;
case MSG_CLOSE:
DestroyMainWindow (hWnd);
PostQuitMessage (hWnd);
return 0;
}
return DefaultMainWinProc(hWnd, message, wParam, lParam);
}
int KeyBoard (HWND hWnd)
{
MSG Msg;
HWND hKB;
MAINWINCREATE CreateInfo;
if (!InitMiniGUIExt())
{
return 2;
}
//设置键盘窗口属性
CreateInfo.dwStyle = WS_VISIBLE | WS_THINFRAME;
CreateInfo.dwExStyle = WS_EX_TOPMOST | WS_EX_TOOLWINDOW;
CreateInfo.spCaption = " ";
CreateInfo.hMenu = 0;
CreateInfo.hCursor = GetSystemCursor(IDC_ARROW);
CreateInfo.hIcon = 0;
CreateInfo.MainWindowProc = KeyBoardPro;
CreateInfo.lx = 90;
CreateInfo.ty = 105;
CreateInfo.rx = 320;
CreateInfo.by = 215;
CreateInfo.iBkColor = GetWindowElementColor (BKC_CONTROL_DEF);
CreateInfo.dwAddData = 0;
CreateInfo.dwReserved = 0;
CreateInfo.hHosting = hWnd;
//创建键盘窗口
hKB = CreateMainWindow (&CreateInfo);
if (hKB == HWND_INVALID)
return -1;
//显示键盘窗口
ShowWindow(hKB, SW_SHOWNORMAL);
while (GetMessage(&Msg, hKB))
{
TranslateMessage(&Msg);
DispatchMessage(&Msg);
}
MiniGUIExtCleanUp ();
MainWindowThreadCleanup (hKB);
return 0;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -