跳至主要內容

System.PY2GB


System.PY2GB

函数原型

long System.PY2GB(int id, addr str, addr buf);

功能

根据拼音取汉字

说明

  • str指向拼音字符串
  • id为汉字的序号(从0开始)
  • buf为存储符合条件的汉字的缓冲区
  • 返回值为-1表示没有符合条件的汉字,否则:
    • 返回值的低字表示符合条件的汉字数(一次最多取9个)
    • 返回值的高字表示该拼音下的所有汉字数

示例

#define LEFT_KEY 0x17
#define UP_KEY   0x14
#define DOWN_KEY 0x15

void main()
{
    char i, c, pinyin[10];
    char s[20];
    int id, sum;
    long t;

    pinyin[0] = 0;
    i = 0;
    id = 0;
    sum = 0;
    ClearScreen();
    TextOut(2, 67, "拼", 1);
    Block(1, 66, 13, 78, 2);
    Refresh();
    for (;;) {
        c = getchar();
        if (c == LEFT_KEY) {
            if (i) {
                pinyin[--i] = 0;
                id = 0;
                sum = 0;
            }
        } else if (c == DOWN_KEY) {
            if (id + 9 < sum) id = id + 9;
        } else if (c == UP_KEY) {
            if (id > 9) id = id - 9;
            else id = 0;
        } else if (c >= 'a' && c <= 'z') {
            if (i < 6) {
                pinyin[i++] = c;
                pinyin[i] = 0;
                id = 0;
                sum = 0;
            }
        }
        Block(15, 67, 159, 79, 0);
        TextOut(15, 67, pinyin, 1);
        t = System.PY2GB(id, pinyin, s);
        if (t != -1) {
            sum = t >> 16;
            TextOut(52, 67, s, 1);
        }
        Refresh();
    }
}