问题大致同上,我简单说下背景:
对话框上仅放一个组合框,组合框默认有输入焦点,这个输入焦点不仅仅是可以输入,要有提示用户输入的“黑色竖线”如图对话框上仅放一个浏览器控件的话,譬如打开百度首页,首页的输入框是有焦点的,意味浏览器控件有焦点。
把两个放在一个对话框上,打开对话框,去点组合框,组合框此时是可以输入的,但是没有那条黑色竖线,问题就是这样,感觉总怪怪的,求高手给个解决办法,重现我的黑线本是想着写个小浏览器,至少要有地址栏吧,就想到组合框,没有想到出这问题,真心求解决ComboBox对话框浏览器WebBrowser控件
对话框上仅放一个组合框,组合框默认有输入焦点,这个输入焦点不仅仅是可以输入,要有提示用户输入的“黑色竖线”如图对话框上仅放一个浏览器控件的话,譬如打开百度首页,首页的输入框是有焦点的,意味浏览器控件有焦点。
把两个放在一个对话框上,打开对话框,去点组合框,组合框此时是可以输入的,但是没有那条黑色竖线,问题就是这样,感觉总怪怪的,求高手给个解决办法,重现我的黑线本是想着写个小浏览器,至少要有地址栏吧,就想到组合框,没有想到出这问题,真心求解决ComboBox对话框浏览器WebBrowser控件
你说的我大致尝试了一下,是应该可行的,但是我应该还差些什么我又加放一个编辑框上去,响应编辑框的EN_SetFocus消息,在里面添加 m_combox.SetFocus();
点一次编辑框的时候,焦点可以看出已经到组合框上了(直接输入是在组合框里)但是没有那条黑色竖线,但是我点第二次编辑框,黑色竖线就出现了回复之前我还做了测试,如果响应组合框的 EN_SetFocus ,点到死都不出黑色竖线
如果在编辑框的消息响应中重复写m_combox.SetFocus();还是需要点两次组合框才能有黑色竖线大神,请指点一下中间焦点传递的流程,怎样传递能正常,我程序:对话框,浏览器控件,组合框(想当成地址栏)就这两个控件其他都没有,我在线等呀,江湖救急
BOOL CWebTestDlg::PreTranslateMessage(MSG* pMsg)
{
// TODO: Add your specialized code here and/or call the base class switch(pMsg->message)
{
case WM_LBUTTONDOWN:
{
if(pMsg->hwnd == GetDlgItem(IDC_EDIT1)->m_hWnd)
{
GetDlgItem(IDC_EDIT1)->SetFocus();
GetDlgItem(IDC_EDIT1)->ShowCaret();
}
}
break;
return CDialog::PreTranslateMessage(pMsg);
}
请允许我膜拜一下
如果对话框上有编辑框和浏览器控件,你上面那一段代码是非常有用的
之后我换成组合框的控件ID,就出问题,我跟踪调试了一下,问题应该不算在代码上
如果去掉判断直接这样,组合框是会显示 黑色竖线的
GetDlgItem(IDC_COMBO1)->SetFocus();
GetDlgItem(IDC_COMBO1)->ShowCaret();
但是去掉判断就意味着,点击其他地方也是会让组合框获得焦点。跟踪调试问题就在那个判断语句上,换成组合框,我应该怎样写呀?
写的一手好代码,新人膜拜呀,我基础太差了,程序都是百度着进行下去的,悲剧的是公司还只有我一个MFC程序员(新小公司慢慢招人)没有人交流,唉...
结贴了,你去回复一下我这个帖子,我也给你30分:http://bbs.csdn.net/topics/390551525
关于这个帖子,题目中的问题我还没有解决,但是下面追问的我已经解决了(选上SystemMenu最小化弹菜单的问题),是我自己代码的问题
问题没有人回复,不想一直拖着了...
{
// TODO: 在此添加专用代码和/或调用基类 switch(pMsg->message)
{
case WM_LBUTTONDOWN:
{
// 点击组合框不仅使组合框获得焦点
// 也具有输入指示的 黑色竖线
CComboBox *pBox1 = (CComboBox*)m_combox.GetWindow(GW_CHILD); if (pMsg->hwnd == pBox1->GetSafeHwnd())
{
GetDlgItem(IDC_COMBO)->SetFocus();
GetDlgItem(IDC_COMBO)->ShowCaret();
}
}
break;
}
return CDialogEx::PreTranslateMessage(pMsg);
}