Annotation of mstools/samples/cdtest/readme.txt, revision 1.1.1.1

1.1       root        1: CDTEST consists of a number of dialog boxes that allow you to edit
                      2: the values of each of the common dialog creation structure members.
                      3: This will allow you to create nearly any type of common dialog box
                      4: on the fly.
                      5: 
                      6: Here are some things that you need to know about how it works:
                      7: 
                      8: 
                      9: For ALL the CDTEST dialogs:
                     10: ***************************
                     11: 
                     12: 1.  CDTEST does not create any type of dialog on its own besides
                     13:     a default one.  If you want to create your own type of common dialog,
                     14:     you have to edit the structure element fields.  For instance, if
                     15:     you want to hide the network button in the GetOpenFileName()
                     16:     dialog, you have to "OR" the value for OFN_NONETWORKBUTTON in
                     17:     "Flags" structure element field.  To get the values for the
                     18:     common dialog flags, look in the commdlg.h header file.
                     19: 
                     20: 
                     21: 2.  There are some check boxes in each dialog that need some explanation:
                     22: 
                     23:     A.  The "NULL Structure" box.
                     24: 
                     25:         If you check this box, CDTEST will send a NULL value for the common
                     26:         dialog creation structure to the common dialog function.  The common
                     27:         dialog should fail at startup, and the common dialog function should
                     28:         return FALSE and set the correct CommDlgExtendedError().
                     29: 
                     30:     B.  The "Preloaded Template" box(es).
                     31: 
                     32:         If this box is marked, CDTEST will preload a custom template
                     33:         resource and put the value of the handle to the resource
                     34:         in the hInstance member of the common dialog structure (or in
                     35:         the hPrintTemplate / hSetupTemplate if you are in the PrintDlg()
                     36:         dialog).  BUT, CDTEST will not create a custom template dialog
                     37:         with this preloaded custom template unless you also put the
                     38:         XXX_ENABLETEMPLATEHANDLE flag in the "Flags" box.  So to create
                     39:         a GetOpenFileName() dialog with a multiple selection files list box
                     40:         and a preloaded custom dialog template:
                     41: 
                     42:         1.  Put (OFN_ENABLETEMPLATEHANDLE | OFN_ALLOWMULTISELECT)
                     43:             in the "Flags" edit box.
                     44: 
                     45:         2.  Check the "Preloaded Template" box.
                     46: 
                     47:         3.  Click OK.
                     48: 
                     49:         * Note: Be sure you are in the right "number mode".  If you are
                     50:         in "Decimal Mode" and you enter hex values into the structure
                     51:         you will get unexpected results.  Choose Hex Mode or Decimal
                     52:         mode from the main menu.
                     53: 
                     54: 
                     55: 3.  The RESET Button will set all the values for the common dialog
                     56:     creation structure back to CDTEST's defaults.
                     57: 
                     58: 4.  "Add" and "Clear" buttons.  These are used to edit arrays that
                     59:     might be needed in common dialog box creation.  "Clear" clears
                     60:     the whole array and "Add" adds what you have typed into the
                     61:     edit control part of the combo box to the left of these buttons.
                     62: 
                     63: 5.  "MultiThread" buttons.  These will create dialogs in exactly the
                     64:     same way that CDTEST always does, but it will create two threads
                     65:     and two dialogs.
                     66: 
                     67:     *Note: The modeless-ness of the find and replace dialogs causes
                     68:     some problems with multithreading them, so multithreading
                     69:     for FindText() and ReplaceText() has not been implemented.
                     70: 
                     71: 
                     72: 
                     73: 
                     74: Information specific to only some of the CDTEST dialogs:
                     75: ********************************************************
                     76: 
                     77: ChooseFont:
                     78: -----------
                     79: 
                     80: 1.  When you open the choosefont dialog you see a list of ChooseFont()
                     81:     flags and fonts on the right of the vertical dividing line.  These
                     82:     do not affect the choosefont dialog creation at all.  These only exist
                     83:     to allow the user to compare the fonts found by Choosefont() with a
                     84:     list of fonts found independently of ChooseFont().  The lists should
                     85:     be indentical.  So, if you want to see a list of only the 
                     86:     scalable screen fonts, mark the "CF_SCALABLEONLY" and "CF_SCREENFONTS"
                     87:     boxes.  If you create a ChooseFont() dialog with the flags of
                     88:     (CF_SCREENFONTS | CF_SCALABLEONLY) you should get the same list of
                     89:     fonts.
                     90: 
                     91: 2.  NOTE:  The ChooseFont() dialog will give you a "No fonts found" 
                     92:     error if you don't include the CF_SCREENFONTS or the CF_PRINTERFONTS 
                     93:     flag as part of the value in the "Flags" edit box.  This is by common 
                     94:     dialog design.
                     95: 
                     96: 3.  If you want printer fonts to be listed in the ChooseFont() dialog, you
                     97:     have to mark the "Printer" radio button in the "HDC Type" group.
                     98: 
                     99:     Example:
                    100: 
                    101:     To create a ChooseFont() dialog containing only the scalable screen
                    102:     fonts that exist on the current printer:
                    103: 
                    104:     A.  Put the value for (CF_PRINTERFONTS | CF_SCALABLEONLY) in the "Flags"
                    105:         edit box.
                    106: 
                    107:     B.  Mark the "Printer" option in the "HDC Type" group.
                    108: 
                    109:     C.  Click OK.
                    110: 
                    111: 
                    112: 
                    113: Open/Save:
                    114: ----------
                    115: 
                    116: 1.  If you want to create a custom template Open or Save dialog with
                    117:     the OFN_ENABLETEMPLATE flag, you need to specify the name of the
                    118:     template in the "lpTemplateName" structure field.  The names are:
                    119: 
                    120:     opentemp1 -- single selection files list box dialog template.
                    121: 
                    122:     opentemp2 -- multiple selection files list box dialog template.
                    123: 
                    124: 
                    125: Find/Replace:
                    126: -------------
                    127: 
                    128: 1.  If you want to create a custom template Find or Replace dialog with
                    129:     the FR_ENABLETEMPLATE flag, you need to specify the name of the
                    130:     template in the "lpTemplateName" structure field.  The names are:
                    131: 
                    132:     frtemp1 -- find template.
                    133: 
                    134:     frtemp2 -- replace template.
                    135: 
                    136: 
                    137: 
                    138: Final Notes:
                    139: ************
                    140: 
                    141: 
                    142: * There is no way to create a NULL pointer as a value to be used for one of
                    143:   the dialog elements that requires a string pointer such as the "lpstrFile"
                    144:   element of the GetOpenFileName() structure.  If you leave this field blank,
                    145:   CDTEST will call GetOpenFileName with a valid pointer to a string containing
                    146:   a NULL character as its first value.
                    147: 
                    148: 
                    149: * If you click the multithreading button, the two dialogs that are created
                    150:   are positioned in exactly the same spot on the screen so it looks like only
                    151:   one was created.
                    152: 
                    153: 
                    154: * It is best to click the "Reset" button after you return to CDTEST from
                    155:   a common dialog because CDTEST fills the current structure-editing fields
                    156:   with the values contained in the common dialog creation structure AFTER
                    157:   the common dialog function has returned.  These values may not be what
                    158:   you expect.
                    159: 
                    160:   An example of when this would cause a problem would be the following:
                    161: 
                    162:   1.  Go to Dialogs, GetOpenFileName.
                    163: 
                    164:   2.  Click OK to create the default GetOpenFileName dialog.
                    165: 
                    166:   3.  Cancel the GetOpenFileName dialog.
                    167: 
                    168:   4.  Put the value for OFN_ENABLEHOOK in the "Fields" edit box, and click
                    169:       OK.  This will fail because if you call GetOpenFileName() without
                    170:       OFN_ENABLEHOOK, it sets the value for OPENFILENAME.lpfnHook to
                    171:       NULL - by common dialog design.  So when you returned from the first
                    172:       GetOpenFileName() dialog, the NULL value for OPENFILENAME.lpfnHook was
                    173:       put in the "lpfnHook" edit box, and when you tried to call the function
                    174:       again with the OFN_ENABLEHOOK flag, you get a failure because the
                    175:       address for your hook proc is NULL.

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.