Overriding the default buttons on CPropertySheets | CodeGuru

Overriding the default buttons on CPropertySheets

How to override the default buttons on a properysheet: What you need to do is override the OnSetDefID in CPropertySheet. So you would add the following to your message map in your derived class: ON_MESSAGE(DM_SETDEFID, OnSetDefID) And declare OnSetDefID which would look something like this: //CMG: Override the CPropertySheet default button and replace with own. […]

Written By
CodeGuru Staff
CodeGuru Staff
Aug 6, 1998
1 minute read
CodeGuru content and product recommendations are editorially independent. We may make money when you click on links to our partners. Learn More

How to override the default buttons on a properysheet:

What you need to do is override the OnSetDefID in CPropertySheet.
So you would add the following to your message map in your derived class:

ON_MESSAGE(DM_SETDEFID, OnSetDefID)

And declare OnSetDefID which would look something like this:

//CMG: Override the CPropertySheet default button and replace with own.
LRESULT CTSIDlg::OnSetDefID(WPARAM wParam, LPARAM lParam)
{
LRESULT lReturn;
//The current default ID, in case you want to access it:
int nIDOldDef = LOWORD(DefWindowProc(DM_GETDEFID, wParam, lParam));

&nbsp switch (GetActiveIndex())
&nbsp {
&nbsp&nbsp case 1:
&nbsp&nbsp&nbsp lReturn = DefWindowProc(DM_SETDEFID, YOUR_ID_HERE, lParam);
&nbsp&nbsp&nbsp return lReturn;
&nbsp&nbsp&nbsp break;
&nbsp }
&nbsp return Default();
}

Note in the DefWindowProc you can set the default ID for your own control.

One thing I didn’t figure out is how to erase the dark
highlight from the OK button. But the ID you set will also have the dark highlight.

If you were using the Wizard you might do this differently. If you want a really nice piece of code I could send it
later as in Wizard mode the FINISH button and NEXT button would need to be default sometimes. But if you just have a regular PropertySheet
dialog and want to override the default button this will do the job.

Cheers,
Chris

Last updated: 22 July 1998

CodeGuru Logo

CodeGuru covers topics related to Microsoft-related software development, mobile development, database management, and web application programming. In addition to tutorials and how-tos that teach programmers how to code in Microsoft-related languages and frameworks like C# and .Net, we also publish articles on software development tools, the latest in developer news, and advice for project managers. Cloud services such as Microsoft Azure and database options including SQL Server and MSSQL are also frequently covered.

Property of TechnologyAdvice. © 2026 TechnologyAdvice. All Rights Reserved

Advertiser Disclosure: Some of the products that appear on this site are from companies from which TechnologyAdvice receives compensation. This compensation may impact how and where products appear on this site including, for example, the order in which they appear. TechnologyAdvice does not include all companies or all types of products available in the marketplace.