如何使编辑框一直保持有焦点

youyou6115 2009-11-25 01:29:15
我写了一个软键盘,想实现这样的功能,软键盘已被运行,当编辑框获得焦点时,软键盘弹出,当编辑框失去焦点时,软键盘隐藏起来,重载了编辑框的类,分别重载了OnSetFocus和OnKillFocus,可结果时当软键盘弹出时,编辑框就失去了焦点,于是执行OnKillFocus,软键盘被隐藏起来了,然后编辑框就又获得了焦点,于是就这样循环,软键盘就弹出隐藏弹出隐藏,不停的这样做,请问大家有什么好的建议来实现这个功能:当编辑框获得焦点时,软键盘弹出,当编辑框失去焦点时,软键盘隐藏起来

...全文
928 19 打赏 收藏 转发到动态 举报
写回复
用AI写文章
19 条回复
切换为时间正序
请发表友善的回复…
发表回复
youyou6115 2009-11-30
  • 打赏
  • 举报
回复
知道如何正确的添加WM_ACTIVEATE消息了,可当这个函数响应时,窗口已经高亮了,说明窗口已经被激活了。那我应该怎么做才能实现这样的功能:当鼠标点击它,它可以相应鼠标的活动,但它应该是一直处于非激活状态。
youyou6115 2009-11-26
  • 打赏
  • 举报
回复
[Quote=引用 12 楼 m_s_d_n 的回复:]
没搞清窗口消息之前,请您别随便搞界面开发。
对您的看法,我只能表示无语了。

引用 11 楼 youyou6115 的回复:
WM_MOUSEACTIVATE,是不是要用到钩子呢

[/Quote]
哎,新手啊,所以需要你们的帮助啊,千万别走啊
M_S_D_N 2009-11-26
  • 打赏
  • 举报
回复
没搞清窗口消息之前,请您别随便搞界面开发。
对您的看法,我只能表示无语了。

[Quote=引用 11 楼 youyou6115 的回复:]
WM_MOUSEACTIVATE,是不是要用到钩子呢
[/Quote]
youyou6115 2009-11-26
  • 打赏
  • 举报
回复
WM_MOUSEACTIVATE,是不是要用到钩子呢
youyou6115 2009-11-26
  • 打赏
  • 举报
回复
我自己添加了WM_ACTIVATE消息的处理函数,可是没有响应
M_S_D_N 2009-11-26
  • 打赏
  • 举报
回复
晕死,10楼的时候不是跟你说了可以用WM_ACTIVATE消息?

[Quote=引用 16 楼 youyou6115 的回复:]
让你们见笑了。WM_MOUSEACTIVATE ce下没有这个消息。
[/Quote]
youyou6115 2009-11-26
  • 打赏
  • 举报
回复
让你们见笑了。WM_MOUSEACTIVATE ce下没有这个消息。
MoXiaoRab 2009-11-26
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 youyou6115 的回复:]
WM_MOUSEACTIVATE,是不是要用到钩子呢
[/Quote]
额。。。这个。。。
oldn123 2009-11-26
  • 打赏
  • 举报
回复
你说的编辑框是指哪里的编辑框啊?任意应用程序的编辑框么?还是你自己应用程序的.
如果是前者一定要用hook了,后者此不必
M_S_D_N 2009-11-25
  • 打赏
  • 举报
回复
可能是CE下没有这个消息,你可以利用WM_ACTIVATE这个消息。

不过在MSDN的CE部分关于WM_ACTIVATE的说明中提到了WM_MOUSEACTIVATE消息,为什么你会找不到?

[Quote=引用 9 楼 youyou6115 的回复:]
引用 8 楼 m_s_d_n 的回复:

2. 在软键盘的WM_MOUSEACTIVATE消息响应函数中,返回MA_NOACTIVATE,即不让鼠标激活当前这个窗口。
这个方法专业。


可是我没找到WM_MOUSEACTIVATE这个消息啊
[/Quote]
youyou6115 2009-11-25
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 m_s_d_n 的回复:]

2. 在软键盘的WM_MOUSEACTIVATE消息响应函数中,返回MA_NOACTIVATE,即不让鼠标激活当前这个窗口。
这个方法专业。

[/Quote]
可是我没找到WM_MOUSEACTIVATE这个消息啊
M_S_D_N 2009-11-25
  • 打赏
  • 举报
回复
两个办法:
1. 编辑框判断失去焦点时,获得焦点的窗口如果是你的软键盘窗口,则不隐藏软键盘,否则隐藏;
这个方法不好。

2. 在软键盘的WM_MOUSEACTIVATE消息响应函数中,返回MA_NOACTIVATE,即不让鼠标激活当前这个窗口。
这个方法专业。

[Quote=引用 7 楼 youyou6115 的回复:]
我知道了为什么一点击软键盘就消失了,因为我再OnKillFocus里把软键盘隐藏了。我想我的软键盘写的有点问题,当点击软键盘时,编辑框就暂时失去焦点,可是该怎么做才能使编辑框一直有焦点呢。我的程序是wince下的
[/Quote]
youyou6115 2009-11-25
  • 打赏
  • 举报
回复
我知道了为什么一点击软键盘就消失了,因为我再OnKillFocus里把软键盘隐藏了。我想我的软键盘写的有点问题,当点击软键盘时,编辑框就暂时失去焦点,可是该怎么做才能使编辑框一直有焦点呢。我的程序是wince下的
youyou6115 2009-11-25
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 m_s_d_n 的回复:]
建议使用
SetWindowPos(NULL, 0, 0, 0, 0, SWP_NOZORDER | SWP_NOMOVE | SWP_NOSIZE | SWP_NOACTIVE | SWP_SHOWWINDOW) ;
来显示软键盘窗口。

引用 4 楼 youyou6115 的回复:
软键盘弹出我是用下面代码实现的:
CWnd*   pWnd=CWnd::FindWindow(NULL,_T("Keyboard"));
HWND   hwnd=pWnd->GetSafeHwnd();
//::PostMessage(hwnd,WM_CLOSE,0,0);
::SendMessage(hwnd,WM_SHOWWINDOW,SW_SHOW,SW_SHOW);
在软键盘程序里重载了OnShowWindow。
软键盘一弹出来编辑框焦点就失去了。


[/Quote]
谢谢,这样弹出软键盘编辑框不会丢失焦点。
但是这样我一点击软键盘,它怎么就消失了呢
M_S_D_N 2009-11-25
  • 打赏
  • 举报
回复
建议使用
SetWindowPos(NULL, 0, 0, 0, 0, SWP_NOZORDER | SWP_NOMOVE | SWP_NOSIZE | SWP_NOACTIVE | SWP_SHOWWINDOW) ;
来显示软键盘窗口。

[Quote=引用 4 楼 youyou6115 的回复:]
软键盘弹出我是用下面代码实现的:
CWnd*  pWnd=CWnd::FindWindow(NULL,_T("Keyboard"));
HWND  hwnd=pWnd->GetSafeHwnd();
//::PostMessage(hwnd,WM_CLOSE,0,0);
::SendMessage(hwnd,WM_SHOWWINDOW,SW_SHOW,SW_SHOW);
在软键盘程序里重载了OnShowWindow。
软键盘一弹出来编辑框焦点就失去了。

[/Quote]
youyou6115 2009-11-25
  • 打赏
  • 举报
回复
软键盘弹出我是用下面代码实现的:
CWnd* pWnd=CWnd::FindWindow(NULL,_T("Keyboard"));
HWND hwnd=pWnd->GetSafeHwnd();
//::PostMessage(hwnd,WM_CLOSE,0,0);
::SendMessage(hwnd,WM_SHOWWINDOW,SW_SHOW,SW_SHOW);
在软键盘程序里重载了OnShowWindow。
软键盘一弹出来编辑框焦点就失去了。
youyou6115 2009-11-25
  • 打赏
  • 举报
回复
ce API函数SipShowIM可以实现这个功能,可我找不到这个函数的源码,谁有能共享一下吗
hhwei1985 2009-11-25
  • 打赏
  • 举报
回复
up
M_S_D_N 2009-11-25
  • 打赏
  • 举报
回复
软键盘弹出的时候不要夺取编辑框的焦点即可。

16,551

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Creator Browser
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

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