loveamy / duilib

Automatically exported from code.google.com/p/duilib
0 stars 1 forks source link

RichEdit的bug:当前窗口包含一个子窗口(比如嵌入一个IE),当该嵌入子窗口获得焦点是,再点击RichEdit的时候,RichEdit不能输入 #102

Open GoogleCodeExporter opened 9 years ago

GoogleCodeExporter commented 9 years ago
RichEdit的bug:
Step1
RichEdit得到焦点
Step2:
点击能获得焦点的一个windows子窗口(如IE),这时候IE获得焦
点,父窗口失去焦点
Step3:
再点击RichEdit,这时候RichEdit始终不能再得到焦点,造成不能�
��入

Reason:
当父窗口失去焦点的时候,RichEdit的状态是Focus的,当再次点�
��RichEdit时,它将不能再次获得焦点,因为它已经是有焦点的状
态,所以没办法再次将其SetFocus

修改代码:

LRESULT CRichEditUI::MessageHandler(UINT uMsg, WPARAM wParam, LPARAM lParam, 
bool& bHandled)
{
...

if (uMsg == WM_KILLFOCUS)
    {
        //fix bug,当嵌入Windows控件时,如果别的windows控件(如嵌入的IE,它是该窗口的一个子窗口)得到Focus的时候,自己的焦点并没有去掉,造成下次不能再输入
        if (m_bFocused && this->GetManager())
        {
            this->GetManager()->SetFocus(NULL);
        }
        return 0;
    }
...
...
...

Original issue reported on code.google.com by pro...@gmail.com on 27 Mar 2014 at 7:39