怎么判断当前焦点窗口是否可输入字符

如何判断当前焦点窗口是否可输入字符?
CEditView
CEdit
CCombox
CList // 按字符查找
CListCtrl //按字符查找
还有很多自绘控件,如QQ聊天窗口,VC6.0编辑窗口等

这些都可以输入字符,如何判断当前焦点窗口可以输入字符?

------解决方案--------------------
想到一个
GetFocus获取当前焦点窗口
IsWindowEnabled判断窗口是否可用
GetWindowRect获取窗口矩形
GetCursorPos获取光标位置
PtInRect判断光标位置是否在窗口矩形里

自绘窗口如DirectUI之类的,常规API方法没法操作判断。
------解决方案--------------------
探讨

想到一个
GetFocus获取当前焦点窗口
IsWindowEnabled判断窗口是否可用
GetWindowRect获取窗口矩形
GetCursorPos获取光标位置
PtInRect判断光标位置是否在窗口矩形里

自绘窗口如DirectUI之类的,常规API方法没法操作判断。

------解决方案--------------------
GetGUIThreadInfo,然后看看结构体里的hwndCaret成员是否有值,这个就是编辑框(至少这是应用通知WINDOWS这个窗口需要输入文字的“编辑框”),还有光标位置,输入法的输入跟随就是用它来实现的
------解决方案--------------------
获得窗口焦点 发个WM_CHAR
------解决方案--------------------
在当前焦点窗口有键盘消息过滤WM_CHAR消息,用isalpha判断。
------解决方案--------------------
探讨

GetGUIThreadInfo,然后看看结构体里的hwndCaret成员是否有值,这个就是编辑框(至少这是应用通知WINDOWS这个窗口需要输入文字的“编辑框”),还有光标位置,输入法的输入跟随就是用它来实现的