Re: Receiving message from CCombo by parent
On Tue, 12 May 2009 22:14:22 -0700 (PDT), info@RescueRigger.com wrote:
I have a class derived from a CDockablePane. It has a CCombo variable:
public:
CCombo m_wndCombo;
In CMyDockablePane::OnCreate(), I create the combo:
m_wndCombo.Create(dwComboViewStyle, rect, this, ID_MY_HANDLER)
The combo appears and works fine. My challenge is trying to receive a
message when the selection changes. FWIW, I haven't had code like this
where the combo isn't subclassed and where it isn't in a dialog (so
there isn't a control ID).
If you create the window as above, it is subclassed. It also has a control
ID no matter how it's created.
I added a message handler to CMyDockablePane, expecting (hoping?) to
handle the message like this:
In the header file:
protected:
afx_msg void OnMyCombo();
In the BEGIN_MESSAGE_MAP:
ON_COMMAND(ID_MY_HANDLER, OnMyCombo)
And the function:
void CMyDockablePane::OnMyCombo()
{
AfxMessageBox(_T("OnMyCombo!"));
}
Only, as you probably know, the function doesn't get called... Help?
I don't know CMyDockablePane, but you could be a victim (or perhaps
beneficiary) of MFC's standard message routing. It may that the command
message follows the normal chain of responsibility, one form of which goes,
view, frame window, document, application object, IIRC. I know that when I
add a CComboBox to a toolbar, I can handle its command messages in the
frame window, so your case may be similar.
--
Doug Harrison
Visual C++ MVP