窗体的焦点问题,我搞不懂了
我有一个控件,里面包含一个动态下拉的CListbox(派生类类名CInplacePopup),在点击按钮时,就会弹出这个CInplacePopup,当在这个CInplacePopup中选择后,CInplacePopup就会自动隐藏。(这个非常类似CComboBox的效果,点击下拉三角后,就会拉出下拉列表,然后在下拉列表中选择,选好后下拉列表就会自动隐藏。)
这个CInplacePopup的父窗体是桌面,而不是控件本身。
其他功能我都实现了,现在有一个问题:
当下拉的CInplacePopup显示后,我希望这个CInplacePopup获得焦点。可是我不管怎么样,都不能把焦点设置到这个CInplacePopup上来。
方法1:
m_InplacePopup.SetFocus();
//_ASSERTE(::GetFocus() == m_InplacePopup.m_hWnd); //断言不成立
这样子不行,m_InplacePopup没有获得焦点(一般有焦点的ListBox,当前条目上会有虚线框框起来的,这个显示出来的时侯,连虚线框都没有)
方法2:
GetFocus()->SendMessage(WM_KILLFOCUS, 0, 0);
m_InplacePopup.SendMessage(WM_SETFOCUS, ::GetFocus(), 0);
//_ASSERTE(::GetFocus() == m_InplacePopup.m_hWnd); //断言不成立
这样子还是不行,m_InplacePopup貌似获得焦点(因为当前条目上会有虚线框框起来的).可是,他居然不能获得键盘消息,而且断言不成立!!!!
请大家帮忙看看,是什么地方出了问题?