A Base Dialog Class for Modal/Modeless Dialog with Custom Background Color

This base dialog class (CBaseDialog) handles:


1) Modal dialog
2) Modeless dialog
3) Custom Background color
4) ON_UPDATE_COMMAND_UI available for dialog controls (I used Tim McColl's method).

How to use CBaseDialog class in your project?

To construct a modeless dialog:

Let's say CMyDialog is derived from CBaseDialog, and m_pDlg is declared as a CDialog* in a class where you plan to instanticate the dialog.


m_pDlg = new CMyDialog; 
m_pDlg.SetModelessFlag(true); // voila! this is all it takes to make your dlg modeless!
m_pDlg->Create(IDD_MYDIALOG); 
m_pDlg->ShowWindow(SW_SHOW); 

To construct a modal dialog:

Assumption: CMyDialog is derived from CBaseDialog.

CMyDialog dlg; // you can see, business is as usual:-)
dlg.DoModal(); 

To change dialog background:

You can specify background color in your OnInitDialog:

SetBackgroundColor(RGB(0, 0, 128)); // you can really make your dialog fansy now

You can add a ON_UPDATE_COMMAND_UI for a control in the dialog to set states for the control ( see Tim McColl's Use ON_UPDATE_COMMAND_UI in the dialog section). See how it is done in the demo project.

Have fun, folks!

Warning:

ON_UPDATE_COMMAND_UI handler does not work if the dialog is modeless. If anyone has a solution to this, please let me know so that the source can be updated.

Download demo project - 33KB

Download source - 3KB