data.c

来自「This folder includes IME sample source c」· C语言 代码 · 共 382 行 · 第 1/2 页

C
382
字号
        0x251B, 0x0020, 0x2501, 0x2534, 0x2548, 0x2546, 0x2536, 0x2526,
        0x2537, 0x2538, 0x2539, 0x252B, 0x253A, 0x253B, 0x0020, 0x254A,
        0x2549, 0x0020, 0x2503, 0x2524, 0x2527, 0x2535, 0x2528, 0x252A,
        0x2547, 0x2525, 0x2545, 0x2529, 0x2544, 0x0020, 0x0020, 0x254B,
        0x2509, 0x0020, 0x0020, 0x2514, 0x2507, 0x0020, 0x250B, 0x0020, 

        0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020,
        0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020,
        0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020,
        0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020,
        0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020,
        0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020,
    };
#else
BYTE SKLayout[NumsSK][MAXSOFTKEYS*2] = {
    " 0123456789abcdefghijklmnopqrstuvwxyz;=,-./`[\]'",
    "                     κχυμγνξοθπρ  ωψι  αδλεηφβτζσ                      ",
    "                     лъшнвопржстуьызиагмдёщбчецф  э  юя  й  кх",
    " ㄦㄉ    ㄓ    ㄚㄞㄢㄇㄖㄏㄎㄍㄑㄕㄘㄛㄨㄜㄠㄩㄙㄟㄣㄆㄐㄋㄔㄧㄒㄊ  ㄗㄈㄤ  ㄝ  ㄡㄥㄅ        ",
    "                     ē  ǔěǎè  īǒíǐìǘǖò  āàé  óùáúōū    ǚ  ǜü  ê      ",
    "   ぃぅぇぉかきくけこなもむぬすねのはつひふへゅゃってさせにそちめしみたまほ  ょんゎをぁと  ゐゑ",
    " ケィゥヴェォカヵキクナモムヌスネノハツヒフヘュャッテサセニソチメシミタマホコョヶヮヲァトンヰヱ",
    " ˉ,、;:?!…—·〔(【〈“〉《》∶「」『[)"'‘”〕々‖】’〗~〖』¨]ˇ{}。`〃|.",
    " ⅪⅡⅢⅣⅤⅥⅦⅧⅨⅩ㈠⑸⑶㈢⒊㈣㈤㈥⒏㈦㈧㈨⑺⑹⒐⒑⒈⒋㈡⒌⒎⑷⒉⑵⒍⑴㈩  ⑻Ⅻ⑼⑽Ⅰ        ",
    "   ≡≠=≤≥<>≮≯∧⊙∠∑-∏∪∩∫∈  ∵∽≌∮∝±×∨÷  ⌒+∥/⊥∴    ∷√  ≈∞      ",
    " ¤°′″$£¥‰%℃百  毫万二亿兆吉七太拍艾    八九○三千四六微一厘五分      ¢      十      ",
    " ┄┍┎┏┐┑┒┓  ─┬╀┾┮┞┯┰┱┣┲┳  ╂╁  │├┟┭┠┢┿┝┽┡┼    ╃┈    ┌┆  ┊  ",
    "                     ■^@▲☆※→←◇↑↓〓 ̄_◆□§★△○◎\№&●#                      ",
    };
BYTE SKLayoutS[NumsSK][MAXSOFTKEYS*2] = {
    " )!@#$%^&*(ABCDEFGHIJKLMNOPQRSTUVWXYZ:+<_>?~{|}"",
    "                      ΚΧΥΜΓΝΞΟΘΠΡ  ΩΨΙ  ΑΔΛΕΗΦΒΤΖΣ                      ",
    "                      ЛЪШНВОПРЖСТУЬЫЗИАГМДЁЩБЧЕЦФ  Э  ЮЯ  Й  КХ",
    "                                                                                                ",
    "                                                                                                ",
    "    いうえおがぎぐげごぱろるぷずぺぽぼづびぶべゆや  でざぜぴぞぢれじりだらぼ  よ  わ  あど      ",
    "  ゲイウ  エオガ  ギグパロルプズペポバヅビブベユヤ  デザゼピゾヂレジリダラボゴヨ  ワ  アド      ",
    "                                                                                                ",
    "                      ①⒂⒀③⒔④⑤⑥⒙⑦⑧⑨⒄⒃⒚⒛⒒⒕②⒖⒘⒁⒓⑿⒗⑾⑩  ⒅  ⒆⒇          ",
    "                                                                                                ",
    "                      佰      贰      柒          扒玖零叁仟肆陆  壹  伍                拾      ",
    "  ┅┕┖┗┘┙┚┛  ━┴╈╆┶┦┷┸┹┫┺┻  ╊╉  ┃┤┧┵┨┪╇┥╅┩╄    ╋┉    └┇  ┋  ",
    "                                                                                                ",
    };
#endif //UNICODE

#pragma data_seg()

HDC   ST_UI_hDC;
UINT  uStartComp = 0;
UINT  uOpenCand = 0;
UINT  uCaps = 0;
DWORD SaTC_Trace;

HINSTANCE hInst;
IMEL      sImeL;
LPIMEL    lpImeL;
TCHAR      szUIClassName[CLASS_LEN];
TCHAR      szCompClassName[CLASS_LEN];
TCHAR      szCandClassName[CLASS_LEN];
TCHAR      szStatusClassName[CLASS_LEN];
TCHAR      szCMenuClassName[CLASS_LEN];            
TCHAR      szSoftkeyMenuClassName[CLASS_LEN];    
TCHAR      szHandCursor[] = TEXT("Hand");
TCHAR      szChinese[] = TEXT("Chinese");
TCHAR      szEnglish[] = TEXT("English");
#if defined(COMBO_IME)
TCHAR        pszImeName[IMEINDEXNUM][MAX_PATH];
TCHAR        *szImeName;
TCHAR        szImeRegName[MAX_PATH];
#else
#if defined(GB)
TCHAR      szImeName[] = pszImeName[0];
#else
TCHAR      szImeName[] = pszImeName[1];
#endif
#endif //COMBO_IME
TCHAR      szCode[] = TEXT("Code");
TCHAR      szEudc[] = TEXT("Eudc");
TCHAR      szFullShape[] = TEXT("FullShape");
TCHAR      szHalfShape[] = TEXT("HalfShape");
TCHAR      szSymbol[] = TEXT("Symbol");
TCHAR      szNoSymbol[] = TEXT("NoSymbol");
TCHAR      szNone[] = TEXT("None");
TCHAR      szSoftKBD[] = TEXT("SoftKBD");
TCHAR      szNoSoftKBD[] = TEXT("NoSoftKBD");
TCHAR      szDigit[] = TEXT("01234567890");

#ifdef UNICODE
TCHAR      szCandInf[] ={0x0020, 0x0020, 0x0020, 0x6570, 0x5B57, 0x952E, 0x0000};
TCHAR       szTrace[]= {0x5149, 0x6807, 0x8DDF, 0x968F, 0x0000};
TCHAR      szRegRevKL[] = {0x7F16, 0x7801, 0x67E5, 0x8BE2, 0x0000};
TCHAR      szRegRevMaxKey[] = {0x7F16, 0x7801, 0x67E5, 0x8BE2, 0x7801, 0x957F, 0x0000};
TCHAR       szWarnTitle[] = {0x8B66, 0x544A, 0x0000};
TCHAR       szErrorTitle[] = {0x9519, 0x8BEF, 0x0000};
#else
BYTE       szCandInf[] = "   数字键";
BYTE       szTrace[]= "光标跟随";
#if defined(CROSSREF)
BYTE  szRegRevKL[] = "编码查询";
BYTE  szRegRevMaxKey[] = "编码查询码长";
#endif //CROSSREF
BYTE  szWarnTitle[]="警告";    
BYTE  szErrorTitle[]="错误";
#endif //UNICODE

// convert char to upper case
BYTE bUpper[] = {
// 0x20 - 0x27
    0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27,
// 0x28 - 0x2F
    0x28, 0x29, 0x2A, 0x2B, 0x2C, 0x2D, 0x2E, 0x2F,
// 0x30 - 0x37
    0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37,
// 0x38 - 0x3F
    0x38, 0x39, 0x3A, 0x3B, 0x3C, 0x3D, 0x3E, 0x3F,
// 0x40 - 0x47
    0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47,
// 0x48 - 0x4F
    0x48, 0x49, 0x4A, 0x4B, 0x4C, 0x4D, 0x4E, 0x4F,
// 0x50 - 0x57
    0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57,
// 0x58 - 0x5F
    0x58, 0x59, 0x5A, 0x5B, 0x5C, 0x5D, 0x5E, 0x5F,
//   '    a    b    c    d    e    f    g 
    '`', 'A', 'B', 'C', 'D', 'E', 'F', 'G',
//   h    i    j    k    l    m    n    o
    'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O',
//   p    q    r    s    t    u    v    w
    'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W',
//   x    y    z    {    |    }    ~
    'X', 'Y', 'Z'
};

WORD fMask[] = {         // offset of bitfield
    0x0001, 0x0002, 0x0004, 0x0008, 0x0010, 0x0020, 0x0040, 0x0080,
    0x0100, 0x0200, 0x0400, 0x0800, 0x1000, 0x2000, 0x4000, 0x8000
};

TCHAR szRegIMESetting[] = TEXT("Control Panel\\Input Method");
TCHAR szPara[] = TEXT("Parallel Distance");
TCHAR szPerp[] = TEXT("Perpendicular Distance");
TCHAR szParaTol[] = TEXT("Parallel Tolerance");
TCHAR szPerpTol[] = TEXT("Perpendicular Tolerance");
#if defined(COMBO_IME)
TCHAR szRegImeIndex[] = TEXT("IME Index");
#endif
// decide UI offset base on escapement
const NEARCARET ncUIEsc[] = {
   // LogFontX  LogFontY  ParaX   PerpX   ParaY   PerpY
    { 0,        1,        1,      0,      0,      1},       // 0
    { 1,        0,        0,      1,      1,      0},       // 900
    { 0,        0,       -1,      0,      0,      1},       // 1800
    {-1,        0,        0,     -1,     -1,      0}        // 2700
};
// decide another UI offset base on escapement
const NEARCARET ncAltUIEsc[] = {
   // LogFontX  LogFontY  ParaX   PerpX   ParaY   PerpY
    { 0,        0,        1,      0,      0,     -1},       // 0
    { 0,        0,        0,     -1,      1,      0},       // 900
    { 0,        0,       -1,      0,      0,     -1},       // 1800
    { 0,        0,        0,      1,     -1,      0}        // 2700
};
// decide input rectangle base on escapement
const POINT ptInputEsc[] = {
    // LogFontWi   LogFontHi
    {1,            1},                                  // 0
    {1,           -1},                                  // 900
    {1,            1},                                  // 1800
    {-1,           1}                                   // 2700
};

// decide another input rectangle base on escapement
const POINT ptAltInputEsc[] = {
    // LogFontWi   LogFontHi
    {1,           -1},                                  // 0
    {-1,          -1},                                  // 900
    {1,           -1},                                  // 1800
    {1,            1}                                   // 2700
};


BYTE VirtKey48Map[48] = {
    0x20, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38,
    0x39, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, 0x48, 0x49,
    0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f, 0x50, 0x51, 0x52, 0x53,
    0x54, 0x55, 0x56, 0x57, 0x58, 0x59, 0x5a, 0xba, 0xbb, 0xbc,
    0xbd, 0xbe, 0xbf, 0xc0, 0xdb, 0xdc, 0xdd, 0xde
};

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?