当前位置: 主页 > 百科 > 计算机编程 > 易语言源码 >
-12 Comments

输入法候选字列表的源代码

发布于:2016-07-04  |   作者:http://www.zxjsq.net  |   已聚集:人围观

.版本 2

.支持库 spec

.程序集变量 程_窗口回调, 整数型


.子程序 __启动窗口_创建完毕


_编辑框_获得焦点 ()

连续赋值 (取用户区宽度 () - 16, 编辑框.宽度, 列表框.宽度, 标签.宽度)

程_窗口回调 = Api_SetWindowLong (列表框.取窗口句柄 (), -4, &__启动窗口_窗口回调)


.子程序 __启动窗口_窗口回调, 整数型

.参数 窗口句柄, 整数型

.参数 窗口消息, 整数型

.参数 第一参数, 整数型

.参数 第二参数, 整数型

.局部变量 局_结构指针, 整数型

.局部变量 局_计次数值, 整数型

.局部变量 局_偏移位置, 整数型

.局部变量 局_布置文本, 文本型

.局部变量 局_布置长度, 整数型

.局部变量 局_输入指针, 整数型, 静态

.局部变量 局_候选列表, Api_CandidateList


.判断开始 (窗口消息 = #WM_IME_ENDCOMPOSITION)

    列表框.清空 ()

    编辑框.内容 = “”

    局_布置长度 = Api_ImmGetCompositionString (局_输入指针, #GCS_RESULTSTR, 局_布置文本, 0)

    .如果真 (局_布置长度 > 0)

        局_布置文本 = 取空白文本 (局_布置长度)

        Api_ImmGetCompositionString (局_输入指针, #GCS_RESULTSTR, 局_布置文本, 局_布置长度)

        标签.标题 = “您输入的内容是< ” + 局_布置文本 + “ >”

    .如果真结束

    局_输入指针 = 0

.判断 (窗口消息 = #WM_IME_STARTCOMPOSITION)

    局_输入指针 = Api_ImmGetContext (窗口句柄)

.判断 (窗口消息 = #WM_IME_NOTIFY)

    .判断开始 (第一参数 = #IMN_CHANGECANDIDATE 且 局_输入指针 ≠ 0)

        列表框.清空 ()

        局_候选列表.dwSize = Api_ImmGetCandidateList (局_输入指针, 0, 局_结构指针, 0)

        .如果真 (局_候选列表.dwSize > 0)

            局_结构指针 = 申请内存 (局_候选列表.dwSize, )

            Api_ImmGetCandidateList (局_输入指针, 0, 局_结构指针, 局_候选列表.dwSize)

            Api_RtlMoveMemory (局_候选列表, 局_结构指针, 24)

            .如果真 (局_候选列表.dwCount > 0)

                局_候选列表.dwOffset = 指针到字节集 (局_结构指针 + 24, 局_候选列表.dwCount × 4)

                .计次循环首 (局_候选列表.dwCount, 局_计次数值)

                    局_偏移位置 = 取字节集数据 (局_候选列表.dwOffset, 3, (局_计次数值 - 1) × 4 + 1)

                    .如果真 (局_偏移位置 < 0)

                        到循环尾 ()

                    .如果真结束

                    列表框.加入项目 (指针到文本 (局_结构指针 + 局_偏移位置), 局_计次数值)

                .计次循环尾 ()

                局_布置长度 = Api_ImmGetCompositionString (局_输入指针, #GCS_COMPSTR, 局_布置文本, 0)

                .如果真 (局_布置长度 > 0)

                    局_布置文本 = 取空白文本 (局_布置长度)

                    Api_ImmGetCompositionString (局_输入指针, #GCS_COMPSTR, 局_布置文本, 局_布置长度)

                    编辑框.内容 = 局_布置文本

                    编辑框.被选择字符数 = -1

                .如果真结束


            .如果真结束


        .如果真结束


    .默认


    .判断结束


.默认


.判断结束

返回 (Api_CallWindowProc (程_窗口回调, 窗口句柄, 窗口消息, 第一参数, 第二参数))



.子程序 _编辑框_获得焦点


列表框.获取焦点 ()


标签:                   喜欢:收藏