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 -&gt; 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 -&gt; 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 -&gt; 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 -&gt; HWND
185    val <a href="#ReplaceText">ReplaceText</a> : FINDREPLACE -&gt; 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 -&gt; string
230    val <a
231name="GetOpenFileName">GetOpenFileName</a> : OPENFILENAME -&gt; OPENFILENAME option
232    val <a
233name="GetSaveFileName">GetSaveFileName</a> : OPENFILENAME -&gt; 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 -&gt; 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 -&gt; PRINTDLG option
311  end</pre>
312
313<p>Generally these functions create modal dialogue boxes.&nbsp; They take a configuration
314structure as an argument and return an option type.&nbsp; NONE is returned if the user
315presses Cancel.&nbsp; If the user presses OK the result is SOME with a modified structure
316containing the user's input.&nbsp; </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&nbsp; 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