Presentation is loading. Please wait.

Presentation is loading. Please wait.

Dialog Boxes and Property Sheets

Similar presentations


Presentation on theme: "Dialog Boxes and Property Sheets"— Presentation transcript:

1 Dialog Boxes and Property Sheets
Kevin Devaney

2 Dialog Boxes Modal Modeless Property Sheets
Owner window disabled until dialog closed Modeless Owner window can be reactivated while dialog is still open Property Sheets Dialog boxes with tabbed pages

3 Class Hierarchy

4 Example Dialog Box Font dialog Controls Combo boxes List boxes
Check boxes Push buttons

5 Create a Simple Dialog App
Use MFC AppWizard Visual C++ Menu File / New / MFC AppWizard “Step 0” - Define project name and location Step 1 – Choose “Dialog-based” Other Steps – Accept defaults

6 Using MFC AppWizard

7 Add Dialog Controls Use toolbar to select controls for your dialog
Click on the control you want Click on the dialog where you want to put the control Drag mouse on edges of the control to resize it Right-click on control, select properties and provide new ID

8 Dialog Resource File (.rc)
IDD_CREDIT_DIALOG DIALOGEX 0, 0, 265, 154 STYLE DS_MODALFRAME | WS_MINIMIZEBOX | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU EXSTYLE WS_EX_APPWINDOW CAPTION "Credit Card Calculator" FONT 8, "MS Sans Serif" BEGIN DEFPUSHBUTTON "Calculate",IDOK,198,102,41,14 PUSHBUTTON "Exit",IDCANCEL,198,126,41,14 CONTROL "Spin1",IDC_SPIN_DEBT,"msctls_updown32",UDS_ARROWKEYS,21,22,11,14 END Resource file has “dialog template” Dialog box characteristics (popup) Types of controls used in the dialog (spin) Control position, size, characteristics

9 Adding Shortcut Keys &Exit Right-click on control and select
Properties &Exit Alt-E will activate the Exit button

10 Setting Tab Order In Visual C++ menu, choose Layout/Tab Order
Current tab order will be shown Click on controls in desired order to set a new tab order

11 Responding to User Input
Double-click on the control “Add Member Function” dialog will pop up Select “OK” and it will create a function for that control OnOK for OK button OnChangeEditXxxx for edit control Add code to the function to perform the needed processing

12 Temperature Converter
IDC_EDIT_INPUT IDC_EDIT_OUTPUT

13 OnOK Processing

14 How to talk to controls - 1
Use CWnd functions GetDlgItemText, SetDlgItemText CheckRadioButton, GetCheckedRadioButton CheckDlgButton, IsDlgButtonChecked This was illustrated in Temperature Converter example

15 How to talk to controls - 2
Use info supplied in the message handler

16 How to talk to controls - 3
Use common control classes CEdit, CListBox, CComboBox, CSliderCtrl, etc Use CWnd Attach function to associated control class with your control

17 Common Control Class Example
Remember to use Detach function if you create the object on the stack

18 How to talk to controls - 4
Use Dynamic Data Exchange Override virtual function DoDataExchange Use DDX functions to associate member variables with controls Exchange occurs: Input (variable to control) in OnInitDialog Output (control to variable) in OnOK

19 DDX Example

20 DDX Functions DDX_Text Edit control DDX_Check Check box
DDX_Radio Radio box DDX_LBIndex, DDX_LBString List box DDX_CBIndex, DDX_CBString Combo box DDX_Scroll Scroll bar

21 Dynamic Data Validation
Dynamic data validation (DDV) works similar to DDX DDV checks that input data is within specified limits If data is outside limits, focus is passed to the control and an error message is displayed

22 DDV Example

23 DDV Functions DDV_MinMaxByte, DDV_MinMaxInt,
DDV_MinMaxLong, DDV_MinMaxUInt, DDV_MinMaxDWord, DDV_MinMaxFloat, DDV_MinMaxDouble, DDV_MaxChars

24 Modal vs Modeless Modal Display dialog by calling CDialog::DoModal
Exit by calling CDialog::OnOK or OnCancel Usually instantiated on the stack so destruction is automatic

25 Modal vs Modeless Modeless Display dialog by calling CDialog::Create
Exit dialog by calling DestroyWindow Don’t call OnOK or OnCancel Usually instantiated on the heap (new) so the dialog is not destroyed prematurely Make sure dialog is deleted by overriding CDialog::PostNcDestroy function using “delete this” statement

26 Basic Modal Dialog Programming (see example p. 398)
Declare dialog member variables in header file (.h) Initialize variables and setup controls in OnInitDialog Use Class Wizard to create message handler functions that get user input Perform data processing in OnOK and comment out call to Cdialog::OnOK()

27 Property Sheets Tabbed dialog boxes
User can switch between pages using mouse MFC classes CPropertySheet CPropertyPage

28 Common Dialogs CFileDialog CPrintDialog CPageSetupDialog
CFindReplaceDialog CColorDialog CFontDialog

29 CFileDialog

30 CFileDialog code TCHAR szFilters[] = _T("Text files (*.txt)|*.txt|All files (*.*)|*.*||") CFileDialog dlg(TRUE, _T("txt"), _T("*.txt"), OFN_FILEMUSTEXIST | OFN_HIDEREADONLY, szFilters); if( dlg.DoModal() == IDOK ) { filename = dlg.GetPathName(); }


Download ppt "Dialog Boxes and Property Sheets"

Similar presentations


Ads by Google