RE: CRepeatButton
I do not quite understand tour statement:
I see it sends the BN_CLICKED message to the button function which is
connected to CRepeatButton.
BN_CLICKED is not a message.
That is not what happens. What happens in the code snippet is as follows:
After 100 ms delay timer is set to 200 ms delay and from a WM_TIMER message
handler, button repeatedly sends WM_COMMAND message with button???s ID and
NOTYFICATION CODE BN_CLICKED.
I do not see any function connected to a CRepeatButton. MFC way of handling
messages is mapping a message handler in a class??? object.
I cannot say if Parent object has a handler for this particular command.
To answer your question:
In general, of course, you can. You would have to cast Parent pointer to a
dialog class type.
Another way of handling that would be to send a custom message.
The question is why would you want to do that? Why would you use button to
repeatedly invoke a function from a button, while you can do the same in the
Parent class, calling member function from own WM_TIMER message handler?
--
RainMan
"Eddards" wrote:
In the code below in the RepeatButton.cpp of the test app I see it
sends the BN_CLICKED message to the button function which is connected
to CRepeatButton.
Is it possible to call another function within the main dialog from here?
void CRepeatButton::OnTimer(UINT nIDEvent)
{
if (nIDEvent == 100)
{
KillTimer(100);
//start the button pressing timer
SetTimer(200,200,NULL); // 200=ID 1000=msdelay
}
else if (nIDEvent = 200)
{
CWnd *Parent = GetParent();
if (Parent)
{
//send the BN_CLICK Message to the parent
Parent->SendMessage(WM_COMMAND,MAKEWPARAM(GetDlgCtrlID(),BN_CLICKED),(LPARAM)m_hWnd);
}
}
CButton::OnTimer(nIDEvent);
}