⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 kb.c

📁 minigui PDA系统 可实现手机功能
💻 C
📖 第 1 页 / 共 2 页
字号:
#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 + -