Re: Proper use of ON_CONTROL
Mkennedy1102 wrote:
Im working on a custom control but I can't make heads or tails out of how to
use this macro to map the messages the control sends. According to MSDN,
this is the proper syntax:
ON_CONTROL( wNotifyCode, id, memberFxn )
Parameters
wNotifyCode
The notification code of the control.
id
The command ID.
memberFxn
The name of the message-handler function to which the command is mapped.
From what little i have been able to piece together through the MSDN
website, these forums, and the documentation that came with VC++, it seems
like I should be using WM_COMMAND as the wNotifyCode, and then put my control
ID and my control's message ID in the wparam, with the controls hwnd in the
lparam, something like this:
mainWin->SendMessage(WM_COMMAND, <CC_CHANGING + IDC_CUSTOM2>, <hWnd of the
control>)
is that about right? I have defined CC_CHANGING with a #define statement as
WM_USER+1, so the compiler knows what to do with it, but how do I make a
wparam out of those two values? Plus this doesn't really seem to fit the
specified structure. If someone could give me a simple explanation of what
message i need to send and how to catch it in my main window,I would really
appreciate it. Thanks in advance.
A notification code is not a WM_xxx constant. It is just some constant
defined by the control (like BN_CLICKED for a button).
// See WM_COMMAND spec
main->SendMessage(WM_COMMAND, MAKEWPARAM(ID, CC_CHANGING),
(LPARAM)hwnd_control);
// Message map
ON_CONTROL(CC_CHANGING, ID, OnCCChanging)
// Message handler
void Cxx:OnCCChanging()
{
}
--
Scott McPhillips [VC++ MVP]