关于CEdit焦点的问题.

「已注销」 2014-04-29 10:14:01
现在做的一个项目中,有许多对话框,基本都是create出来的非模态对话框 ,各个对话框之间的显示都是sw_show,sw_hide.
类似于:
void CXXXX::Button1()
{
dlg1.showwindow(TRUE);
dlg2.showwindow(FALSE);
}
在这些窗口上会有一些输入框,并且处理了输入框 的en_setfocus消息,在有焦点的时候默认做一些处理.
现在有一个问题就是在窗口切换显示的时候,并不想让输入框默认得到焦点(MFC是默认会让子控件得到焦点).初始化initdlg的时候return了FALSE,窗口第一次显示的时候已经可以了。
但是当类似上面的代码运行的时候 ,要显示的窗口里的子控件如cedit,还是会得到焦点.现在不知道 怎么处理.

也加了些setfocu,和killfocus的处理,但效果不好.
比如
void CXXXX::Button1()
{
dlg1.showwindow(TRUE);
dlg2.sendmessage(wm_kllfoucs, 0, 0);
dlg2.showwindow(FALSE);
}

void dlg2::onkillfocus()
{
SendDlgItemMessage(IDC_EDIT_SEARCHINPUT, WM_KILLFOCUS, 0, 0);
}

这样处理过后,切换回dlg2显示,还是会让输入框 得到setfocus消息。
...全文
130 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
schlafenhamster 2014-04-29
  • 打赏
  • 举报
回复
dlg2.sendmessage(wm_kllfoucs, 0, 0); 把焦点 设到 OK 上 dlg2.OK.sendmessage(wm_SETFOCUS, 0, 0);
「已注销」 2014-04-29
  • 打赏
  • 举报
回复
引用 1 楼 schlafenhamster 的回复:
dlg2.sendmessage(wm_kllfoucs, 0, 0); 把焦点 设到 OK 上 dlg2.OK.sendmessage(wm_SETFOCUS, 0, 0);
新建了个工程试了一下,发现以上的措施对于普通的mfc工程是有效的,我们项目里用界面库,可能是该库导致的问题。 没什么 人回答,结了拉倒..

15,979

社区成员

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

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