描述:
鄙人刚学ATL,创建了一个基于Edit的控件,想过滤一些消息,确找不到应该在何处过滤,请高人指点下啊,感激不尽。
解决方案1:
BEGIN_MSG_MAP(CYourClass)
ALT_MSG_MAP(1)
MESSAGE_HANDLER(
WM_GETDLGCODE, OnGetDlgCode)
MESSAGE_HANDLER(WM_KEYDOWN, onkeydown)
MESSAGE_HANDLER(
WM_CHAR, OnEditInputMagnification)
END_MSG_MAP()
.cpp
in constructor: CYourClass::CYourClass() : m_Edit(_T("EDIT"), this, 1) {}
in OnInitDialog: m_Edit.SubclassWindow(::GetWindow(GetDlgItem(IDC_COMBO), GW_CHILD));
add if you want all keys add following:
LRESULT CYourClass::OnGetDlgCode(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled)
{
return DLGC_WANTALLKEYS;
}
and finally you can get KeyDown:
LRESULT CYourClass::onkeydown(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled)
{
switch (wParam)
{
case VK_RETURN:
{
...
}
break;
case VK_TAB:
{
...
}
break;
}
bHandled = FALSE;
return S_OK;
}