输入法开发问题!
通过 Freepy 的 LOG 可以确定输入法的执行顺序是:
1. 注册UI窗口类(DllMain: DLL_PROCESS_ATTACH)
2. 初始化当前输入法(回凋函数ImeInquire)
3. 启动当前输入法(回凋函数ImeSelect)
4. UIWndProc
5. CompWndProc
6. StatusWndProc
...
X. 结束,释放资源(DllMain: DLL_PROCESS_DETACH)
我现在想实现输入法最基本的功能:显示状态窗口及输入窗口,所以
窗口过程UIWndProc,StatusWndProc,CompWndProc,CandWndProc只是简
单的处理几个Windows消息(如WM_CREATE, WM_PAINT).
但在调试时发现,系统执行第1步(注册UI窗口)后并没有调用回凋
函数ImeInquire,却结束了输入法(DllMain:DLL_PROCESS_DETACH).
并且不可再次调试,只有把输入法从系统中删除后再添加方可.
什么会出现这种问题?
是不是因为UIWndProc等窗口过程中没有处理相关的IME消息?
如果是,哪些IME消息处理是必须的?它是在何时,如何被系统调用的
(因为LOG中表明ImeSelect之后才调用相关的WndProc)
[解决办法]
up
[解决办法]
MARK
[解决办法]
up
[解决办法]
意思看不大懂
[解决办法]
输入法,系统就加载一次。而且在你删除输入法之后,系统里面还会保存上一次的纪录,除非重起或者注销都可以。所以说调试起来很麻烦的啊!
[解决办法]
mark
[解决办法]
坐下來學習
[解决办法]
有几个条件不知道你满足了没?
1.编译的文件名必须是.IME后缀的.
2.工程资源里必须是0X3BL类型的.
3.DEF文件里必须导出19个IME的框架函数,最少也得有16个.
4.ImeInquire里必须COPY lpszUIClass值,而且此时UI窗口类名必须已注册,否则进入不到UI窗口过程里.
如果这些都满足了还不行,只能说明是RP问题.
但在调试时发现,系统执行第1步(注册UI窗口)后并没有调用回凋
函数ImeInquire,却结束了输入法(DllMain:DLL_PROCESS_DETACH).
并且不可再次调试,只有把输入法从系统中删除后再添加方可.
没有调用ImeInquire是因为系统认为它不是IME输入法.