如何判断当前焦点窗口是否可输入字符?

码侬 2012-06-13 06:55:50
CEditView
CEdit
CCombox
CList // 按字符查找
CListCtrl //按字符查找
还有很多自绘控件,如QQ聊天窗口,VC6.0编辑窗口等

这些都可以输入字符,如何判断当前焦点窗口可以输入字符?
...全文
398 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
gibsonboy 2012-06-14
  • 打赏
  • 举报
回复
在当前焦点窗口有键盘消息过滤WM_CHAR消息,用isalpha判断。
码侬 2012-06-14
  • 打赏
  • 举报
回复
试一下stjay和redui二位说的。


请问:heksn,发个字符然后呢?
发个字符是不是已经输入了一个字符呢?如过不能随便输入呢?
noodle123 2012-06-14
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 redui 的回复:]

GetGUIThreadInfo,然后看看结构体里的hwndCaret成员是否有值,这个就是编辑框(至少这是应用通知WINDOWS这个窗口需要输入文字的“编辑框”),还有光标位置,输入法的输入跟随就是用它来实现的
[/Quote]支持一下,感觉这个方法不常见,可以试一下看看有效果没。
  • 打赏
  • 举报
回复
获得窗口焦点 发个WM_CHAR
redui 2012-06-13
  • 打赏
  • 举报
回复
GetGUIThreadInfo,然后看看结构体里的hwndCaret成员是否有值,这个就是编辑框(至少这是应用通知WINDOWS这个窗口需要输入文字的“编辑框”),还有光标位置,输入法的输入跟随就是用它来实现的
stjay 2012-06-13
  • 打赏
  • 举报
回复 1
[Quote=引用 1 楼 的回复:]

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

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

GetCursorPos获取光标位置
改为
GetCaretPos获取插入符位置
stjay 2012-06-13
  • 打赏
  • 举报
回复 1
想到一个
GetFocus获取当前焦点窗口
IsWindowEnabled判断窗口是否可用
GetWindowRect获取窗口矩形
GetCursorPos获取光标位置
PtInRect判断光标位置是否在窗口矩形里

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

15,979

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 界面
社区管理员
  • 界面
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧