?? softkb.c
字號(hào):
#include "softkb.h"
#define ITEM_NUM1 11 /* coolbar */
#define ITEM_NUM2 11 /* coolbar */
#define ITEM_NUM3 11 /* coolbar */
#define ITEM_NUM4 10 /* coolbar */
#define IDC_NovaSKB1 1001 /* ime */
#define IDC_NovaSKB2 1002 /* ime */
#define IDC_NovaSKB3 1003 /* ime */
#define IDC_NovaSKB4 1004 /* ime */
#define HEIGHT_SKB 98 /* 軟鍵盤(pán) */
#define WIDTH_SKB 248 /* 軟鍵盤(pán) */
extern HWND hIMEWnd;
static const char* caption1[] =
{
" 1 ", " 2 ", " 3 ", " 4 ", " 5 "," 6 ", " 7 ", " 8 ", " 9 ", " 0 ", "<---"
};
static const int SCANCODE1[] =
{
SCANCODE_1, SCANCODE_2, SCANCODE_3, SCANCODE_4,
SCANCODE_5, SCANCODE_6, SCANCODE_7, SCANCODE_8, SCANCODE_9,
SCANCODE_0, SCANCODE_BACKSPACE
};
static const char* caption2[] =
{
" q ", " w ", " e ", " r ", " t "," y ", " u ", " i ", " o ", " p ",
"up "
};
static const int SCANCODE2[] =
{
SCANCODE_Q, SCANCODE_W, SCANCODE_E, SCANCODE_R,
SCANCODE_T, SCANCODE_Y, SCANCODE_U, SCANCODE_I, SCANCODE_O,
SCANCODE_P, SCANCODE_CURSORBLOCKUP
};
static const char* caption3[] =
{
" a ", " s ", " d ", " f ", " g "," h ", " j ", " k ", " l ", " left ",
" right "
};
static const int SCANCODE3[] =
{
SCANCODE_A, SCANCODE_S, SCANCODE_D, SCANCODE_F,
SCANCODE_G, SCANCODE_H, SCANCODE_J, SCANCODE_K, SCANCODE_L ,SCANCODE_CURSORBLOCKLEFT,
SCANCODE_CURSORBLOCKRIGHT
};
static const char* caption4[] =
{
" z ", " x ", " c ", " v ", " b ", " n ", " m ", " , ", " . " , " down "
};
static const int SCANCODE4[] =
{
SCANCODE_Z, SCANCODE_X, SCANCODE_C, SCANCODE_V,
SCANCODE_B, SCANCODE_N, SCANCODE_M, SCANCODE_COMMA, SCANCODE_PERIOD,
SCANCODE_CURSORBLOCKDOWN
};
static void create_novaskb1 (HWND hWnd)
{
HWND cb = NULL;
COOLBARITEMINFO item;
int i;
cb = CreateWindow (CTRL_COOLBAR,
"",
WS_CHILD | WS_VISIBLE | WS_BORDER,
IDC_NovaSKB1,
0, 0, 240, 20,
hWnd,
0);
item.ItemType = TYPE_TEXTITEM;
item.Bmp = NULL;
item.ItemHint = NULL;
item.dwAddData = 0;
for (i = 0; i < ITEM_NUM1; i++)
{
item.insPos = i;
item.id = i;
item.Caption = caption1[i];
SendMessage(cb, CBM_ADDITEM, 0, (LPARAM)&item);
}
}
static void create_novaskb2 (HWND hWnd)
{
HWND cb;
COOLBARITEMINFO item;
int i;
cb = CreateWindow (CTRL_COOLBAR,
"",
WS_CHILD | WS_VISIBLE | WS_BORDER,
IDC_NovaSKB2,
0, 22, 240, 20,
hWnd,
0);
item.ItemType = TYPE_TEXTITEM;
item.Bmp = NULL;
item.ItemHint = NULL;
item.dwAddData = 0;
for (i = 0; i < ITEM_NUM2; i++)
{
item.insPos = i;
item.id = i;
item.Caption = caption2[i];
SendMessage (cb, CBM_ADDITEM, 0, (LPARAM)&item);
}
}
static void create_novaskb3 (HWND hWnd)
{
HWND cb;
COOLBARITEMINFO item;
int i;
cb = CreateWindow (CTRL_COOLBAR,
"",
WS_CHILD | WS_VISIBLE | WS_BORDER,
IDC_NovaSKB3,
0, 44, 240, 20,
hWnd,
0);
item.ItemType = TYPE_TEXTITEM;
item.Bmp = NULL;
item.ItemHint = NULL;
item.dwAddData = 0;
for (i = 0; i < ITEM_NUM3; i++)
{
item.insPos = i;
item.id = i;
item.Caption = caption3[i];
SendMessage (cb, CBM_ADDITEM, 0, (LPARAM)&item);
}
}
static void create_novaskb4 (HWND hWnd)
{
HWND cb;
COOLBARITEMINFO item;
int i;
cb = CreateWindow (CTRL_COOLBAR,
"",
WS_CHILD | WS_VISIBLE | WS_BORDER ,
IDC_NovaSKB4,
0, 66, 240, 20,
hWnd,
0);
item.ItemType = TYPE_TEXTITEM;
item.Bmp = NULL;
item.ItemHint = NULL;
item.dwAddData = 0;
for (i = 0; i < ITEM_NUM4; i++)
{
item.insPos = i;
item.id = i;
item.Caption = caption4[i];
SendMessage (cb, CBM_ADDITEM, 0, (LPARAM)&item);
}
}
static int NovaSKBProc(HWND hWnd, int message, WPARAM wParam, LPARAM lParam)
{
switch (message)
{
case MSG_CREATE:
create_novaskb1(hWnd);
create_novaskb2(hWnd);
create_novaskb3(hWnd);
create_novaskb4(hWnd);
break;
case MSG_COMMAND:
{
int id = LOWORD (wParam);
int code = HIWORD (wParam);
switch (id)
{
case IDC_NovaSKB1:
SendMessage (hIMEWnd, MSG_KEYDOWN, SCANCODE1[code], 0);
break;
case IDC_NovaSKB2:
SendMessage (hIMEWnd, MSG_KEYDOWN, SCANCODE2[code], 0);
break;
case IDC_NovaSKB3:
SendMessage (hIMEWnd, MSG_KEYDOWN, SCANCODE3[code], 0);
break;
case IDC_NovaSKB4:
SendMessage (hIMEWnd, MSG_KEYDOWN, SCANCODE4[code], 0);
break;
}
}
break;
// case MSG_KEYDOWN:
// Send2ActiveClient(MSG_KEYDOWN, wParam, lParam);
// break;
case MSG_DESTROY:
DestroyAllControls (hWnd);
return 0;
case MSG_CLOSE:
DestroyMainWindow (hWnd);
PostQuitMessage (hWnd);
return 0;
}
return DefaultMainWinProc(hWnd, message, wParam, lParam);
}
static void InitNovaSKBCreateInfo (PMAINWINCREATE pCreateInfo, int x, int y)
{
pCreateInfo->dwStyle = WS_BORDER | WS_VISIBLE ;
pCreateInfo->dwExStyle = WS_EX_TOOLWINDOW;
pCreateInfo->spCaption = "NovaSKB" ;
pCreateInfo->hMenu = 0;
pCreateInfo->hCursor = GetSystemCursor(IDC_ARROW);
pCreateInfo->hIcon = 0;
pCreateInfo->MainWindowProc = NovaSKBProc;
pCreateInfo->lx = x;
pCreateInfo->ty = y;
pCreateInfo->rx = x + WIDTH_SKB;
pCreateInfo->by = y + HEIGHT_SKB;
pCreateInfo->iBkColor = GetWindowElementColor(BKC_CONTROL_DEF);
pCreateInfo->dwAddData = 0;
pCreateInfo->hHosting = HWND_DESKTOP;
}
HWND NovaSKBWindow(HWND hosting, int x, int y)
{
HWND hwnd_novaskb;
MAINWINCREATE CreateInfo;
InitNovaSKBCreateInfo(&CreateInfo, x, y);
CreateInfo.hHosting = hosting;
hwnd_novaskb = CreateMainWindow (&CreateInfo);
if (hwnd_novaskb == HWND_INVALID)
return -1;
ShowWindow(hwnd_novaskb, SW_SHOW);
return hwnd_novaskb;
}
?? 快捷鍵說(shuō)明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -