1<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> 2<html> 3 4<head> 5<title>Windows Interface Reference: CommonDialog structure</title> 6</head> 7 8<body> 9 10<h1>CommonDialog</h1> 11 12<p>The CommonDialog structure contains functions and structures to create common forms of 13dialogue boxes.</p> 14 15<pre>structure CommonDialog : 16 sig 17 type HWND and HDC and COLORREF = Color.COLORREF and HINSTANCE 18 type POINT = { x: int, y: int } 19 type RECT = { left: int, top: int, right: int, bottom: int } 20 21 (* Error codes *) 22 datatype CDERR = 23 DIALOGFAILURE 24 | GENERALCODES 25 | STRUCTSIZE 26 | INITIALIZATION 27 | NOTEMPLATE 28 | NOHINSTANCE 29 | LOADSTRFAILURE 30 | FINDRESFAILURE 31 | LOADRESFAILURE 32 | LOCKRESFAILURE 33 | MEMALLOCFAILURE 34 | MEMLOCKFAILURE 35 | NOHOOK 36 | REGISTERMSGFAIL 37 38 | PRINTERCODES 39 | SETUPFAILURE 40 | PARSEFAILURE 41 | RETDEFFAILURE 42 | LOADDRVFAILURE 43 | GETDEVMODEFAIL 44 | INITFAILURE 45 | NODEVICES 46 | NODEFAULTPRN 47 | DNDMMISMATCH 48 | CREATEICFAILURE 49 | PRINTERNOTFOUND 50 | DEFAULTDIFFERENT 51 52 | CHOOSEFONTCODES 53 | NOFONTS 54 | MAXLESSTHANMIN 55 56 | FILENAMECODES 57 | SUBCLASSFAILURE 58 | INVALIDFILENAME 59 | BUFFERTOOSMALL 60 61 | FINDREPLACECODES 62 | BUFFERLENGTHZERO 63 64 | CHOOSECOLORCODES 65 66 val CommDlgExtendedError : unit -> CDERR 67 68 (* ChooseColor *) 69 70 structure ChooseColorFlags : 71 sig 72 include BIT_FLAGS 73 val CC_ANYCOLOR : flags 74 val CC_FULLOPEN : flags 75 val CC_PREVENTFULLOPEN : flags 76 val CC_RGBINIT : flags 77 val CC_SHOWHELP : flags 78 val CC_SOLIDCOLOR : flags 79 end 80 81 type CHOOSECOLOR = 82 { 83 owner: HWND option, 84 result: COLORREF, 85 customColors: COLORREF list, 86 flags: ChooseColorFlags.flags 87 } 88 89 val ChooseColor : CHOOSECOLOR -> CHOOSECOLOR option 90 91 92 (* ChooseFont *) 93 94 structure ChooseFontFlags : 95 sig 96 include BIT_FLAGS 97 val CF_ANSIONLY : flags 98 val CF_APPLY : flags 99 val CF_BOTH : flags 100 val CF_EFFECTS : flags 101 val CF_FIXEDPITCHONLY : flags 102 val CF_FORCEFONTEXIST : flags 103 val CF_NOFACESEL : flags 104 val CF_NOOEMFONTS : flags 105 val CF_NOSCRIPTSEL : flags 106 val CF_NOSIMULATIONS : flags 107 val CF_NOSIZESEL : flags 108 val CF_NOSTYLESEL : flags 109 val CF_NOVECTORFONTS : flags 110 val CF_NOVERTFONTS : flags 111 val CF_PRINTERFONTS : flags 112 val CF_SCALABLEONLY : flags 113 val CF_SCREENFONTS : flags 114 val CF_SCRIPTSONLY : flags 115 val CF_SELECTSCRIPT : flags 116 val CF_SHOWHELP : flags 117 val CF_TTONLY : flags 118 val CF_WYSIWYG : flags 119 end 120 121 structure ChooseFontTypes : 122 sig 123 include BIT_FLAGS 124 val BOLD_FONTTYPE : flags 125 val ITALIC_FONTTYPE : flags 126 val PRINTER_FONTTYPE : flags 127 val REGULAR_FONTTYPE : flags 128 val SCREEN_FONTTYPE : flags 129 val SIMULATED_FONTTYPE : flags 130 end 131 132 type CHOOSEFONT = 133 { 134 owner: HWND option, 135 context: HDC option, 136 logFont: Font.LOGFONT option, 137 pointSize: int, 138 flags: ChooseFontFlags.flags, 139 colors: COLORREF, 140 style: string option, 141 fontType: ChooseFontTypes.flags, 142 size: {min: int, max: int} option 143 } 144 145 val ChooseFont : CHOOSEFONT -> CHOOSEFONT option 146 147 (* FindText and ReplaceText *) 148 structure FindReplaceFlags : 149 sig 150 include BIT_FLAGS 151 val FR_DIALOGTERM : flags 152 val FR_DOWN : flags 153 val FR_FINDNEXT : flags 154 val FR_HIDEMATCHCASE : flags 155 val FR_HIDEUPDOWN : flags 156 val FR_HIDEWHOLEWORD : flags 157 val FR_MATCHCASE : flags 158 val FR_NOMATCHCASE : flags 159 val FR_NOUPDOWN : flags 160 val FR_NOWHOLEWORD : flags 161 val FR_REPLACE : flags 162 val FR_REPLACEALL : flags 163 val FR_SHOWHELP : flags 164 val FR_WHOLEWORD : flags 165 end 166 167 datatype 168 TemplateType = 169 TemplateDefault 170 | TemplateHandle of Dialog.DLGTEMPLATE 171 | TemplateResource of HINSTANCE * Resource.RESID 172 173 type FINDREPLACE = 174 { 175 owner : HWND, 176 template: TemplateType, 177 flags: FindReplaceFlags.flags, 178 findWhat: string, 179 replaceWith: string, 180 bufferSize: int 181 } 182 183 val <a 184href="#FindText">FindText</a> : FINDREPLACE -> HWND 185 val <a href="#ReplaceText">ReplaceText</a> : FINDREPLACE -> HWND 186 187 (* GetOpenFileName and GetSaveFileName *) 188 189 structure OpenFileFlags : 190 sig 191 include BIT_FLAGS 192 val OFN_ALLOWMULTISELECT : flags 193 val OFN_CREATEPROMPT : flags 194 val OFN_EXPLORER : flags 195 val OFN_EXTENSIONDIFFERENT : flags 196 val OFN_FILEMUSTEXIST : flags 197 val OFN_HIDEREADONLY : flags 198 val OFN_LONGNAMES : flags 199 val OFN_NOCHANGEDIR : flags 200 val OFN_NODEREFERENCELINKS : flags 201 val OFN_NOLONGNAMES : flags 202 val OFN_NONETWORKBUTTON : flags 203 val OFN_NOREADONLYRETURN : flags 204 val OFN_NOTESTFILECREATE : flags 205 val OFN_NOVALIDATE : flags 206 val OFN_OVERWRITEPROMPT : flags 207 val OFN_PATHMUSTEXIST : flags 208 val OFN_READONLY : flags 209 val OFN_SHAREAWARE : flags 210 val OFN_SHOWHELP : flags 211 end 212 213 type OPENFILENAME = 214 { 215 owner: HWND option, 216 template: TemplateType, 217 filter: (string * string) list, 218 customFilter: (string * string) option, 219 filterIndex: int, 220 file: string, (* Initial value of file and returned result. *) 221 maxFile: int, (* Max size of expected file name. *) 222 fileTitle : string, 223 initialDir: string option, 224 title: string option, (* Optional title - default is Save or Open. *) 225 flags: OpenFileFlags.flags, 226 defExt: string option 227 } 228 229 val GetFileTitle : string -> string 230 val <a 231name="GetOpenFileName">GetOpenFileName</a> : OPENFILENAME -> OPENFILENAME option 232 val <a 233name="GetSaveFileName">GetSaveFileName</a> : OPENFILENAME -> OPENFILENAME option 234 235 (* PageSetupDlg *) 236 structure PageSetupFlags : 237 sig 238 include BIT_FLAGS 239 val PSD_DEFAULTMINMARGINS : flags 240 val PSD_DISABLEMARGINS : flags 241 val PSD_DISABLEORIENTATION : flags 242 val PSD_DISABLEPAGEPAINTING : flags 243 val PSD_DISABLEPAPER : flags 244 val PSD_DISABLEPRINTER : flags 245 val PSD_INHUNDREDTHSOFMILLIMETERS : flags 246 val PSD_INTHOUSANDTHSOFINCHES : flags 247 val PSD_MARGINS : flags 248 val PSD_MINMARGINS : flags 249 val PSD_NONETWORKBUTTON : flags 250 val PSD_NOWARNING : flags 251 val PSD_RETURNDEFAULT : flags 252 val PSD_SHOWHELP : flags 253 end 254 255 type PAGESETUPDLG = 256 { 257 owner: HWND option, 258 devMode: DeviceContext.DEVMODE option, 259 devNames: DeviceContext.DEVNAMES option, 260 flags: PageSetupFlags.flags, 261 paperSize: POINT, 262 minMargin: RECT, 263 margin: RECT 264 (* For the moment we ignore the other options. *) 265 } 266 267 val <a 268name="PageSetupDlg">PageSetupDlg</a> : PAGESETUPDLG -> PAGESETUPDLG option 269 270 (* PrintDlg *) 271 structure PrintDlgFlags : 272 sig 273 include BIT_FLAGS 274 val PD_ALLPAGES : flags 275 val PD_COLLATE : flags 276 val PD_DISABLEPRINTTOFILE : flags 277 val PD_HIDEPRINTTOFILE : flags 278 val PD_NONETWORKBUTTON : flags 279 val PD_NOPAGENUMS : flags 280 val PD_NOSELECTION : flags 281 val PD_NOWARNING : flags 282 val PD_PAGENUMS : flags 283 val PD_PRINTSETUP : flags 284 val PD_PRINTTOFILE : flags 285 val PD_RETURNDC : flags 286 val PD_RETURNDEFAULT : flags 287 val PD_RETURNIC : flags 288 val PD_SELECTION : flags 289 val PD_SHOWHELP : flags 290 val PD_USEDEVMODECOPIES : flags 291 val PD_USEDEVMODECOPIESANDCOLLATE : flags 292 end 293 294 type PRINTDLG = 295 { 296 owner: HWND option, 297 devMode: DeviceContext.DEVMODE option, 298 devNames: DeviceContext.DEVNAMES option, 299 context: HDC option, 300 flags: PrintDlgFlags.flags, 301 fromPage: int, 302 toPage: int, 303 minPage: int, 304 maxPage: int, 305 copies: int 306 (* For the moment we ignore the other options. *) 307 } 308 309 val <a 310name="PrintDlg">PrintDlg</a> : PRINTDLG -> PRINTDLG option 311 end</pre> 312 313<p>Generally these functions create modal dialogue boxes. They take a configuration 314structure as an argument and return an option type. NONE is returned if the user 315presses Cancel. If the user presses OK the result is SOME with a modified structure 316containing the user's input. </p> 317 318<p><tt><a name="FindText">FindText</a>(findReplace): HWND<br> 319<a name="ReplaceText">ReplaceText</a>(findReplace): HWND<br> 320</tt>These create modeless dialogues and return a handle to the window for the dialogue. 321 They send <a href="Message.html#FINDMSGSTRING">FINDMSGSTRING</a> messages to the 322parent window to indicate various changes of state.</p> 323</body> 324</html> 325