Re: Please help: trying to capture Enter Key in ComboBox within ToolBar
<jeff.g.anderson@gmail.com> wrote in message
news:1174684460.673411.307020@e1g2000hsg.googlegroups.com...
I think I found the problem but I don't know how to fix it. I looked
at the window handle assigned to m_xEdit after the subclassing (after
this line):
m_xEdit.SubclassWindow(pWnd->GetSafeHwnd());
The window handle according to the debugger is 20B54
I then let the app continue to run and then browsed the window tree
with Spy++. What I found was that the ComboBoxEx32 is 20B52, the
ComboBox below that is 20B54 and the Edit control below that is 20B56.
So my subclassing is actually attaching my edit class to the combobox,
not the edit control....
How then can I get the handle to the edit control? Again, here is my
full OnCtlColor method where I am doing the subclassing:
Thanks,
Jeff
HBRUSH CTypeAheadCombo::OnCtlColor(CDC* pDC,
CWnd* pWnd,
UINT nCtlColor )
{
BOOL x=0;
if (nCtlColor == CTLCOLOR_EDIT)
{
//Edit control
if (m_xEdit.GetSafeHwnd() == NULL)
x = m_xEdit.SubclassWindow(pWnd->GetSafeHwnd());
if (x)
{
TRACE0("SUBCLASSED\n");
}
}
HBRUSH hbr = CComboBoxEx::OnCtlColor(pDC, pWnd, nCtlColor);
return hbr;
}
I failed to catch the fact that you were using CComboBoxEx. I thought you
were using CComboBox. Apparently CCombBoxEx's OnCtrlColor gets
CTLCOLOR_EDIT for everything. So try this instead
HBRUSH CMyComboBoxEx::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
{
if (nCtlColor == CTLCOLOR_EDIT)
{
char Buffer[100];
GetClassName(pWnd->GetSafeHwnd(),Buffer,100);
if (m_Edit.GetSafeHwnd() == NULL && stricmp(Buffer,"Edit") == 0)
{
m_Edit.SubclassWindow(pWnd->GetSafeHwnd());
m_Edit.ModifyStyle(0,ES_WANTRETURN);
}
}
HBRUSH hbr = CComboBoxEx::OnCtlColor(pDC, pWnd, nCtlColor);
return hbr;
}