我的代码如下,为何在组合框中输入ENTER回车键,调试的时候并没有进入OnAddressEdit的消息处理函数,要能响应ENTER回车,应如何做?//////////////////////////////////////////////////////////////////////////////////////////
CComboBox m_AddressCombo;
DWORD dwStyle = WS_CHILD | WS_BORDER | WS_VISIBLE | CBS_DROPDOWN | ES_WANTRETURN;
m_AddressCombo.Create(m_hWnd, rcCombo, _T("Test..."), dwStyle, 0, ID_CTL_ADDRESSCOMB);....COMMAND_HANDLER(ID_CTL_ADDRESSCOMB,CBN_EDITCHANGE,OnAddressEdit)...
LRESULT OnAddressEdit(WORD /*wNotifyCode*/, WORD /*wID*/, HWND /*hWndCtl*/, BOOL& /*bHandled*/)
{
TCHAR url[MAX_PATH];
m_AddressCombo.GetWindowText(url,MAX_PATH-1);
return 0;
}

解决方案 »

  1.   

    If you want to handle WM_KEYDOWN and WM_CHAR messages, you have to subclass the combo box's edit and list box controls, derive classes from CEdit and CListBox, and add handlers for those messages to the derived classes. For more information, see http://support.microsoft.com/default.aspx?scid=kb;en-us;Q174667 and CWnd::SubclassWindow.
      

  2.   

    不用这么麻烦吧,因为CBN_EDITCHANGE就能处理键盘消息,只不过这个ENTER消息没用截获,是不是创建的样式有问题,我在想?
      

  3.   

    查看一下控件的的Styles有没有:want return,有就选中了!!