class ComboxKeyDownFilter:IMessageFilter
{
HWND m_EditHwnd;
this(ComboBox cbox){
m_EditHwnd=FindWindowExA(cbox.handle,null,"Edit",null);
}
bool preFilterMessage(inout Message m)
{
if(m.msg ==WM_KEYDOWN && m_EditHwnd==m.hWnd)
{
writefln("KewDown!");
return false;
}
return false;
}
}
前几天用ComboBox,发现不能触发KeyDown事件,发到Dsource了,昨天看看还没有回音.自己干吧,今天早晨好好研究了下.发现得使用Application的IMessageFilter.
原因是ComboBox包含两个控件,Edit和List,Key事件发送给了Edit,所以在ComboBox的Key事件什么也没有做.
解决ComboBox无法触发KeyDown事件的问题,通过实现IMessageFilter接口过滤消息并捕捉按键事件。
1326

被折叠的 条评论
为什么被折叠?



