CDlg on active (MFC)
-
-
Hi guys, I would like to ask, what is the event handler for dialog activation? I've tried OnActive but it doesn't seem to work. I just want a handler every time a dialog is activated. I'd really appreciate any help or input. Thanks! :rose: Christina
waxie wrote:
dialog activation
What do you mean by this? :~ Before the dialog window is shown to the user? Perhaps
CDialog::OnInitDialog()
is what you're looking for.
"It's supposed to be hard, otherwise anybody could do it!" - selfquote
"High speed never compensates for wrong direction!" - unknown -
waxie wrote:
dialog activation
What do you mean by this? :~ Before the dialog window is shown to the user? Perhaps
CDialog::OnInitDialog()
is what you're looking for.
"It's supposed to be hard, otherwise anybody could do it!" - selfquote
"High speed never compensates for wrong direction!" - unknown -
Nope. Not on initial load. I was looking for an event handler every time the dialog is activated, or everytime the dialog goes active (may it be by clicking, or by some key strokes).
waxie wrote:
I was looking for an event handler every time the dialog is activated
Ok. then it's the overridable
OnActivate()
. It will get called when the window is activated or deactivated. Don't forget to put it in the message map as well. If you add it with ClassWizard this will be done automagically for you. ;)
"It's supposed to be hard, otherwise anybody could do it!" - selfquote
"High speed never compensates for wrong direction!" - unknown -
Hi guys, I would like to ask, what is the event handler for dialog activation? I've tried OnActive but it doesn't seem to work. I just want a handler every time a dialog is activated. I'd really appreciate any help or input. Thanks! :rose: Christina
These are just guesses but maybe it helps: Check WM_NCACTIVATE and also the Frame Window of the dialog (i hope CDialog has one) CChildFrame::OnNcActivate(...) worked for me with CView based class in a MDI environment.
-
Hi guys, I would like to ask, what is the event handler for dialog activation? I've tried OnActive but it doesn't seem to work. I just want a handler every time a dialog is activated. I'd really appreciate any help or input. Thanks! :rose: Christina
-
May be you are looking for OnShowWindow(BOOL ) or something like this will be called everytime the window is sabout to be shown or hidden.
-
These are just guesses but maybe it helps: Check WM_NCACTIVATE and also the Frame Window of the dialog (i hope CDialog has one) CChildFrame::OnNcActivate(...) worked for me with CView based class in a MDI environment.
-
Nope. Not on initial load. I was looking for an event handler every time the dialog is activated, or everytime the dialog goes active (may it be by clicking, or by some key strokes).
For clarification reasons, here's how to do it manually: Add the message handler declaration for
OnActivate()
in you header file:afx_msg void OnActivate( UINT nState, CWnd* pwndOther, BOOL bMinimized );
In your .cpp file, add the message handler to the message map...
ON\_WM\_ACTIVATE()
END_MESSAGE_MAP()
...and add the message handler implementation...
void <YourDialogClass>::OnActivate( UINT nState, CWnd* pwndOther, BOOL bMinimized )
{
TRACE( "OnActivate called.\n" );
}
"It's supposed to be hard, otherwise anybody could do it!" - selfquote
"High speed never compensates for wrong direction!" - unknown -
For clarification reasons, here's how to do it manually: Add the message handler declaration for
OnActivate()
in you header file:afx_msg void OnActivate( UINT nState, CWnd* pwndOther, BOOL bMinimized );
In your .cpp file, add the message handler to the message map...
ON\_WM\_ACTIVATE()
END_MESSAGE_MAP()
...and add the message handler implementation...
void <YourDialogClass>::OnActivate( UINT nState, CWnd* pwndOther, BOOL bMinimized )
{
TRACE( "OnActivate called.\n" );
}
"It's supposed to be hard, otherwise anybody could do it!" - selfquote
"High speed never compensates for wrong direction!" - unknownJust to be sure,what I did is I went to the dialog resource and looked for the message handlers in its properties and added a message handler for WM_ACTIVATE. Still no good though. The dialog (my dialog) is one of the tabs of a parent dialog. Would it matter?
-
Just to be sure,what I did is I went to the dialog resource and looked for the message handlers in its properties and added a message handler for WM_ACTIVATE. Still no good though. The dialog (my dialog) is one of the tabs of a parent dialog. Would it matter?
Is your dialog a property page? If yes then try
CPropertyPage::OnSetActive()
.cheers, mykel
OMM: "Let us be thankful we have commerce. Buy more. Buy more now. Buy. And be happy."
-
Is your dialog a property page? If yes then try
CPropertyPage::OnSetActive()
.cheers, mykel
OMM: "Let us be thankful we have commerce. Buy more. Buy more now. Buy. And be happy."
-
'ait... according to MSDN i recommend the following:
TCN_SELCHANGE Notification
Notifies a tab control's parent window that the currently selected tab has changed.
This message is sent in the form of a WM_NOTIFY message.check MSDN for further details, e.g. the handle to the tab control is passed with the notification. then i guess you can call CTabCtrl::GetCurSel() to get the currently selected tab.
cheers, mykel
OMM: "Let us be thankful we have commerce. Buy more. Buy more now. Buy. And be happy."
-
Just to be sure,what I did is I went to the dialog resource and looked for the message handlers in its properties and added a message handler for WM_ACTIVATE. Still no good though. The dialog (my dialog) is one of the tabs of a parent dialog. Would it matter?
waxie wrote:
The dialog (my dialog) is one of the tabs of a parent dialog. Would it matter?
It depends on what you're trying to do. My guess is that you want to know when the user selects another tab in the control. If I guessed correctly and you're using CTabCtrl you have to write a message handler for the
WM_NOTIFY
message sent from the tab control with theTCN_SELCHANGE
control code. Use ClassWizard to add a message handler for this. Afterwards you message map should have an entry looking something like this:ON_NOTIFY( TCN_SELCHANGE, IDC_TAB, OnTabChanged )
...and a message handler looking similar to this:
void <YourDialogClass>::OnTabSelchange( NMHDR* pNMHDR, LRESULT* pResult )
Have a look att the MSDN sample FIRE[^] to see how it's done.
"It's supposed to be hard, otherwise anybody could do it!" - selfquote
"High speed never compensates for wrong direction!" - unknown