首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > VC/MFC >

输入法开发有关问题

2012-01-22 
输入法开发问题!通过Freepy的LOG可以确定输入法的执行顺序是:1.注册UI窗口类(DllMain:DLL_PROCESS_ATTACH)

输入法开发问题!
通过   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输入法.

热点排行