.版本 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 (程_窗口回调, 窗口句柄, 窗口消息, 第一参数, 第二参数))
.子程序 _编辑框_获得焦点
列表框.获取焦点 ()