"Joseph M. Newcomer" <newcomer@flounder.com> wrote in message
See below...
On Mon, 12 May 2008 16:55:54 -0700, "Nick Schultz" <nick.schultz@flir.com>
wrote:
Hi there,
I am trying to capture the message that is sent when one of my toolbar
buttons are pressed.
I extended the CMFCToolBar class to :
class CGraphToolBar : public CMFCToolBar
I have message map set accordingly:
BEGIN_MESSAGE_MAP(CGraphToolBar, CMFCToolBar)
ON_WM_CREATE()
ON_WM_DESTROY()
ON_COMMAND(IDD_TOOLBAR_NEW, OnNewElementBtn)
END_MESSAGE_MAP()
in the constructor, i create all my buttons (using one as an example):
m_saveBtn = new CMFCToolBarButton(IDD_TOOLBAR_SAVE,3);
I add the button in the OnCreate function:
InsertButton(*m_saveBtn);
And i have a simple handler function:
void CGraphToolBar::OnNewElementBtn(){
TRACE0("CLICKED\n");
}
When I run the program and click the button (the button is greyed out by
the
way), I get this message instead:
Warning: no message line prompt for ID 0x0032.
****
Actually, you are creating a correlation where none exists; the two
phenomena are
completely unrelated.
The failure to enable would be typically be caused by your message map in
your message
routing hiearchy (and your toolbar is not part of that hiearchy) not
having an entry for
the button, so by default it is disabled if there is no handler.
The warning is caused by exactly what it says: there is no string IDS_xxxx
of numeric
value 32(the control value you have assigned the button). But this has
nothing to do with
the failure to enable.
****
I'm not sure what I am doing wrong, where should I be capturing this
message?
****
In the message routing hierarchy. such as in your document, view,
mainframe, app, child
MDI frame, document template, etc. you need a handler. Since the toobar
is not part of
the MFC message routing scheme, a handler in it is not seen and the button
is disabled.
joe
****
Thanks,
Nick
Joseph M. Newcomer [MVP]
email: newcomer@flounder.com
Web: http://www.flounder.com
MVP Tips: http://www.flounder.com/mvp_tips.htm