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

📄 kb.c

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