15 мая 2023 года "Исходники.РУ" отмечают своё 23-летие!
Поздравляем всех причастных и неравнодушных с этим событием!
И огромное спасибо всем, кто был и остаётся с нами все эти годы!

Главная Форум Журнал Wiki DRKB Discuz!ML Помощь проекту


Overriding OK button in CPropertySheet

Eric J.A. Bryant -- ejab@village.ios.com
Monday, January 27, 1997

Environment: VC++4.0;WinNT4.0

Hello all,

I simply wish to override the default implementation of the OK button in
the CPropertySheet. I do not mean simply overriding the OnOK() function,
which is too late as it has already OnApply()ed to every "dirty" page.
I'm guessing I need to override ON_COMMAND but I am not sure which
parameters (wParam, lParam) to check for IDOK.

Thanks in advance,
Eric J. Bryant
InterWorld Technology Ventures, Inc.




Rondal C. Ellifritt -- rondal@mvision.com
Tuesday, January 28, 1997

[Mini-digest: 2 responses]

Eric Bryant wrote:
> 
> Environment: VC++4.0;WinNT4.0
> 
> I simply wish to override the default implementation of the OK button in
> the CPropertySheet. I do not mean simply overriding the OnOK() function,
> which is too late as it has already OnApply()ed to every "dirty" page.
> I'm guessing I need to override ON_COMMAND but I am not sure which
> parameters (wParam, lParam) to check for IDOK.

Why not override OnApply() instead? Or in addition?

Rondal
-- 
____________________________________________________________________________
Rondal C. Ellifritt                                       rondal@mvision.com
-----From: ktm@ormec.com

On mfc-l, Eric J. Bryant, (ejab@village.ios.com) wrote:
> Environment: VC++4.0;WinNT4.0
> 
> I simply wish to override the default implementation of the OK button in 
> the CPropertySheet. I do not mean simply overriding the OnOK() function, 
> which is too late as it has already OnApply()ed to every "dirty" page. 
> I'm guessing I need to override ON_COMMAND but I am not sure which 
> parameters (wParam, lParam) to check for IDOK.

Command messages don't have parameters; see the online help for "WM_COMMAND 
message handler", which shows the function prototype. So you ought to be 
able to manually add to the message map:

BEGIN_MESSAGE_MAP(CMyPropSheet, CPropertySheet)
    //{{AFX_MSG_MAP(CMyPropSheet)
    //}}AFX_MSG_MAP
    ON_COMMAND(IDOK, OnOK)
END_MESSAGE_MAP()

void CMyPropSheet::OnOK()
{
  TRACE("CMyPropSheet::OnOK\n");
  // Do whatever you want.
}

I believe this will completely hide the default behavior.

  Katy
-- 
Katy Mulvey                            ktm@ormec.com
Software Development Engineer
ORMEC Systems                          http://www.ormec.com



Tipparaju Surendra -- tips@mri.co.jp
Thursday, January 30, 1997


Hi

If idea is to just handle the IDOK message of Property sheet 

I do it this way,

BOOL CMySheet::OnCmdMsg(UINT nID, int nCode, void* pExtra, AFX_CMDHANDLERINFO* pHandlerInfo) 
{
	// TODO: $B$3$N0LCV$K8GM-$N=hM}$rDI2C$9$k$+!"$^$?$O4pK\%/%i%9$r8F$S=P$7$F$/$@$5$$(J
	BOOL ret ;
	if(nID == IDOK)
	{
		.... Your code goes here .....
		ret = < Set based on Ur conditions >
	}
	else
	{
		ret = CPropertySheet::OnCmdMsg(nID, nCode, pExtra, pHandlerInfo);
	}
	return ret ;
}

Hope this helps

Tips

----------
From: 	Rondal C. Ellifritt
Sent: 	Wednesday, January 29, 1997 8:01 AM
To: 	Eric Bryant; mfc-l@netcom.com
Subject: 	Re: Overriding OK button in CPropertySheet

[Mini-digest: 2 responses]

Eric Bryant wrote:
> 
> Environment: VC++4.0;WinNT4.0
> 
> I simply wish to override the default implementation of the OK button in
> the CPropertySheet. I do not mean simply overriding the OnOK() function,
> which is too late as it has already OnApply()ed to every "dirty" page.
> I'm guessing I need to override ON_COMMAND but I am not sure which
> parameters (wParam, lParam) to check for IDOK.

Why not override OnApply() instead? Or in addition?

Rondal
-- 
____________________________________________________________________________
Rondal C. Ellifritt                                       rondal@mvision.com
-----From: ktm@ormec.com

On mfc-l, Eric J. Bryant, (ejab@village.ios.com) wrote:
> Environment: VC++4.0;WinNT4.0
> 
> I simply wish to override the default implementation of the OK button in 
> the CPropertySheet. I do not mean simply overriding the OnOK() function, 
> which is too late as it has already OnApply()ed to every "dirty" page. 
> I'm guessing I need to override ON_COMMAND but I am not sure which 
> parameters (wParam, lParam) to check for IDOK.

Command messages don't have parameters; see the online help for "WM_COMMAND 
message handler", which shows the function prototype. So you ought to be 
able to manually add to the message map:

BEGIN_MESSAGE_MAP(CMyPropSheet, CPropertySheet)
    //{{AFX_MSG_MAP(CMyPropSheet)
    //}}AFX_MSG_MAP
    ON_COMMAND(IDOK, OnOK)
END_MESSAGE_MAP()

void CMyPropSheet::OnOK()
{
  TRACE("CMyPropSheet::OnOK\n");
  // Do whatever you want.
}

I believe this will completely hide the default behavior.

  Katy
-- 
Katy Mulvey                            ktm@ormec.com
Software Development Engineer
ORMEC Systems                          http://www.ormec.com







| Вернуться в корень Архива |