魔幻使者Jack 发表于 2015-11-16 17:21:10

WebBrowser和Edit控件同时存在时光标BUG

之前在网上看到过,大概就是对话框上同时有WebBrowser和Edit控件,如果鼠标点击WebBrowser控件后再点击Edit控件,Edit控件的输入光标不能显示,但能够正确输入文字。
亲自试验了一下(VS2012),确实存在这个BUG,然后网上搜了下解决方案,没有找到,╮(╯_╰)╭。
自己研究了一下,最终解决方案就是重载PreTranslateMessage,在里面帮它SetFocus一下,搞定。附上代码:
BOOL CXXDlg::PreTranslateMessage(MSG* pMsg)
{
        if (pMsg->message==WM_LBUTTONDOWN)
        {
                CWnd *pwnd=GetDlgItem(IDC_EDIT_STR);
                if (pMsg->hwnd==pwnd->GetSafeHwnd())
                {
                        pwnd->SetFocus();
                }
        }
        return CDialogEx::PreTranslateMessage(pMsg);
}

gxm771208 发表于 2015-11-17 09:57:08

你这代码段这块,还能直接复制,怎么弄出来的??:lol

魔幻使者Jack 发表于 2015-11-17 10:47:39

gxm771208 发表于 2015-11-17 09:57
你这代码段这块,还能直接复制,怎么弄出来的??

点那个添加代码,然后放里面

gxm771208 发表于 2015-11-17 12:11:04

魔幻使者Jack 发表于 2015-11-17 10:47
点那个添加代码,然后放里面

哦,谢了,:lol昨晚试了几次没弄出来。

admin 发表于 2015-11-17 12:15:48

魔幻使者Jack 发表于 2015-11-17 10:47
点那个添加代码,然后放里面

:victory:果然好用
页: [1]
查看完整版本: WebBrowser和Edit控件同时存在时光标BUG