Dialog Boxes and Property Sheets - PowerPoint PPT Presentation

1 / 35
About This Presentation
Title:

Dialog Boxes and Property Sheets

Description:

desired order to set. a new tab order. Responding to User Input. Double ... This was illustrated in Temperature Converter example. How to talk to controls - 2 ... – PowerPoint PPT presentation

Number of Views:363
Avg rating:3.0/5.0
Slides: 36
Provided by: kwde
Category:

less

Transcript and Presenter's Notes

Title: Dialog Boxes and Property Sheets


1
Dialog Boxes andProperty Sheets
  • Jim Fawcett
  • CSE791 Advanced Windows Programming
  • Summer 2002

2
References
  • Programming Windows with MFC, Jeff Prosise, 2nd
    Edition, Microsoft Press, 1999
  • Derived from presentations by Kevin Devaney and
    Ciahua Wang, 2001

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

4
Class Hierarchy
5
Example Dialog Box
  • Font dialog
  • Controls
  • Combo boxes
  • List boxes
  • Check boxes
  • Push buttons

6
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

7
Using MFC AppWizard
8
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

9
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
10
Adding Shortcut Keys
Right-click on control and select Properties
Exit
Alt-E will activate the Exit button
11
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
12
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 needed
    processing

13
Temperature Converter
IDC_EDIT_INPUT
IDC_EDIT_OUTPUT
14
OnOK Processing
15
How to talk to controls - 1
  • Use CWnd functions
  • GetDlgItemText, SetDlgItemText
  • CheckRadioButton, GetCheckedRadioButton
  • CheckDlgButton, IsDlgButtonChecked
  • This was illustrated in Temperature Converter
    example

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

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

18
Common Control Class Example
Remember to use Detach function if you create
the object on the stack
19
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

20
DDX Example
21
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

22
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

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

25
Modal vs Modeless
  • Modal
  • Display dialog by calling CDialogDoModal
  • Exit by calling CDialogOnOK or OnCancel
  • Usually instantiated on the stack so destruction
    is automatic

26
Modal vs Modeless
  • Modeless
  • Display dialog by calling CDialogCreate
  • Exit dialog by calling DestroyWindow
  • Dont call OnOK or OnCancel
  • Usually instantiated on the heap (new) so the
    dialog is not destroyed prematurely
  • Make sure dialog is deleted by overriding
    CDialogPostNcDestroy function using delete
    this statement

27
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 andcomment out
    call to CdialogOnOK()

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

29
Property Sheets
  • Is a tabbed dialog box containing pages of
    controls that user can switch among.
  • Encapsulated in a pair of MFC classes
    CPropertySheet and CPropertyPage
  • CPropertySheet represents the property sheet
    itself
  • CPropertyPage represents a page in the property
    sheet.
  • Property sheets can be modal or modeless, created
    with DoMomal() or Create()

30
How to Create a Modal Property Sheet
  • For each page create a dialog template.
  • For each page derive a dialog-like class from
    CPropertyPage that include public members linked
    to the pages controls via DDX or DDV.
  • Derive a property sheet class from
    CPropertySheet.
  • Use CPropertySheetAddPage() to add pages to the
    property sheet.
  • Call the property sheets DoModal() to display
    the property sheet.

31
How to Create a Modal Property Sheet (cont.)
  • MFC CPropertySheet provide functions for three
    buttons -- OK, Cancel and Apply.
  • Property sheet pages should not include OK or
    Cancel button --when the property sheets OK
    buton is clicked, the current pages OnOK() is
    called.
  • Add message handler for Apply button, which
    should call the active pages UpdateData(TRUE).
  • Use CPropertyPages SetModified() to enable or
    disable Apply button.

32
How to Create a Modal Property Sheet (cont.)
  • class CFirstPagepublic CPropertyPage
  • public .
  • // delare member here
  • ptotected
  • virtual void DoDataExchange(CDataExchange)
    .
  • class CMyPropertySheetpublic CProperySheet
  • CFirstPage m_firstPage // first
    page ..
  • public .
  • CMyPropertySheet() // constructor
  • AddPage(m_firstPage) .

33
Common Dialogs
  • CFileDialog
  • CPrintDialog
  • CPageSetupDialog
  • CFindReplaceDialog
  • CColorDialog
  • CFontDialog

34
CFileDialog
35
CFileDialog code
TCHAR szFilters _T("Text files
(.txt).txtAll files (.).") CFileDialog
dlg(TRUE, _T("txt"), _T(".txt"),
OFN_FILEMUSTEXIST OFN_HIDEREADONLY,
szFilters) if( dlg.DoModal() IDOK )
filename dlg.GetPathName()
Write a Comment
User Comments (0)
About PowerShow.com