CPropertyPage OnApply wierdness
Rickard Lind -- rickard.lind@st.se
Tuesday, September 24, 1996
Environment: Win NT 3.51, VC++ 4.1
I have a CPropertySheet derivative and three
CPropertyPage derivatives(CPP). Each CPP overrides
the OnOK() and OnApply() virtual functions. But
whenever I click the OK button, the OnApply() function
gets called. Has anyone else seen this?
Regards,
/r
____________________________________________________________
Rickard Lind mailto:rickard.lind@st.se
S&T Datakonsulter http://www.st.se
Valhallav. 191 voice:+46 8 7832714
Box 27183 fax:+46 8 6678230
104 51 Stockholm cell:+46 708 432484
Benny -- blee@filenet.com
Wednesday, September 25, 1996
[Mini-digest: 4 responses]
I believe that is the way it is suppose to work. Think of clicking "OK" as
applying the changes and then saving the changes.
Benny
----------
From: owner-mfc-l
To: mfc-l
Subject: CPropertyPage OnApply wierdness
Date: Tuesday, September 24, 1996 2:25PM
Environment: Win NT 3.51, VC++ 4.1
I have a CPropertySheet derivative and three
CPropertyPage derivatives(CPP). Each CPP overrides
the OnOK() and OnApply() virtual functions. But
whenever I click the OK button, the OnApply() function
gets called. Has anyone else seen this?
Regards,
/r
____________________________________________________________
Rickard Lind mailto:rickard.lind@st.se
S&T Datakonsulter http://www.st.se
Valhallav. 191 voice:+46 8 7832714
Box 27183 fax:+46 8 6678230
104 51 Stockholm cell:+46 708 432484
-----From: "Peter Friis"
As Microsoft would put it: "This behaviour is by design".
See VC++ 4.1's InfoViewer topic on CPropertyPage::OnApply(), which says
"This member function is called by the framework when the user chooses the
OK or the Apply Now button."
________________________________
Peter Friis
Software Engineer
Wallchart International Ltd
Tel: +44 (1403) 275321
Fax: +44 (1403) 275322
http://www.wallchart.com
Email: peterf@wallchart.com
________________________________
-----From: Mario Contestabile
OnApply() is called by the framework when OK or apply now is selected.
Each page gets a chance to handle this, in the order in which the pages were
added to the sheet. If page 1 needs to know beforehand a status from page 3,
it can use QuerySiblings().
mcontest@universal.com
-----From: Jim Barry
I found the documentation a little confusing - this may be because MFC
had a CPropertySheet/CPropertyPage implementation before the Windows 95
Propery Sheets came along.
The OnApply() handler is called whether it was the OK or Apply button
that was clicked. This is reasonable because the only difference between
the two operations is that the Property Sheet is also dismissed with the
OK button. The Win32 Property Sheet control closes itself when the OK
button is clicked - MFC does not explicitly cause this to happen.
The default implementation of OnApply() simply calls OnOK(). I assume
this is either for compatibility with previous CPropertyPage
implementations, or to make Property Pages seem more like regular
dialogs, or both. Note that you have the opportunity in OnApply() to
prevent changes taking place, but not in OnOK().
Jim Barry
Interactive Learning Productions
http://www.ilp.com
| Вернуться в корень Архива
|