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!
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.