The CommonDialog structure contains functions and structures to create common forms of dialogue boxes.
structure CommonDialog :
sig
type HWND and HDC and COLORREF = Color.COLORREF and HINSTANCE
type POINT = { x: int, y: int }
type RECT = { left: int, top: int, right: int, bottom: int }
(* Error codes *)
datatype CDERR =
DIALOGFAILURE
| GENERALCODES
| STRUCTSIZE
| INITIALIZATION
| NOTEMPLATE
| NOHINSTANCE
| LOADSTRFAILURE
| FINDRESFAILURE
| LOADRESFAILURE
| LOCKRESFAILURE
| MEMALLOCFAILURE
| MEMLOCKFAILURE
| NOHOOK
| REGISTERMSGFAIL
| PRINTERCODES
| SETUPFAILURE
| PARSEFAILURE
| RETDEFFAILURE
| LOADDRVFAILURE
| GETDEVMODEFAIL
| INITFAILURE
| NODEVICES
| NODEFAULTPRN
| DNDMMISMATCH
| CREATEICFAILURE
| PRINTERNOTFOUND
| DEFAULTDIFFERENT
| CHOOSEFONTCODES
| NOFONTS
| MAXLESSTHANMIN
| FILENAMECODES
| SUBCLASSFAILURE
| INVALIDFILENAME
| BUFFERTOOSMALL
| FINDREPLACECODES
| BUFFERLENGTHZERO
| CHOOSECOLORCODES
val CommDlgExtendedError : unit -> CDERR
(* ChooseColor *)
structure ChooseColorFlags :
sig
include BIT_FLAGS
val CC_ANYCOLOR : flags
val CC_FULLOPEN : flags
val CC_PREVENTFULLOPEN : flags
val CC_RGBINIT : flags
val CC_SHOWHELP : flags
val CC_SOLIDCOLOR : flags
end
type CHOOSECOLOR =
{
owner: HWND option,
result: COLORREF,
customColors: COLORREF list,
flags: ChooseColorFlags.flags
}
val ChooseColor : CHOOSECOLOR -> CHOOSECOLOR option
(* ChooseFont *)
structure ChooseFontFlags :
sig
include BIT_FLAGS
val CF_ANSIONLY : flags
val CF_APPLY : flags
val CF_BOTH : flags
val CF_EFFECTS : flags
val CF_FIXEDPITCHONLY : flags
val CF_FORCEFONTEXIST : flags
val CF_NOFACESEL : flags
val CF_NOOEMFONTS : flags
val CF_NOSCRIPTSEL : flags
val CF_NOSIMULATIONS : flags
val CF_NOSIZESEL : flags
val CF_NOSTYLESEL : flags
val CF_NOVECTORFONTS : flags
val CF_NOVERTFONTS : flags
val CF_PRINTERFONTS : flags
val CF_SCALABLEONLY : flags
val CF_SCREENFONTS : flags
val CF_SCRIPTSONLY : flags
val CF_SELECTSCRIPT : flags
val CF_SHOWHELP : flags
val CF_TTONLY : flags
val CF_WYSIWYG : flags
end
structure ChooseFontTypes :
sig
include BIT_FLAGS
val BOLD_FONTTYPE : flags
val ITALIC_FONTTYPE : flags
val PRINTER_FONTTYPE : flags
val REGULAR_FONTTYPE : flags
val SCREEN_FONTTYPE : flags
val SIMULATED_FONTTYPE : flags
end
type CHOOSEFONT =
{
owner: HWND option,
context: HDC option,
logFont: Font.LOGFONT option,
pointSize: int,
flags: ChooseFontFlags.flags,
colors: COLORREF,
style: string option,
fontType: ChooseFontTypes.flags,
size: {min: int, max: int} option
}
val ChooseFont : CHOOSEFONT -> CHOOSEFONT option
(* FindText and ReplaceText *)
structure FindReplaceFlags :
sig
include BIT_FLAGS
val FR_DIALOGTERM : flags
val FR_DOWN : flags
val FR_FINDNEXT : flags
val FR_HIDEMATCHCASE : flags
val FR_HIDEUPDOWN : flags
val FR_HIDEWHOLEWORD : flags
val FR_MATCHCASE : flags
val FR_NOMATCHCASE : flags
val FR_NOUPDOWN : flags
val FR_NOWHOLEWORD : flags
val FR_REPLACE : flags
val FR_REPLACEALL : flags
val FR_SHOWHELP : flags
val FR_WHOLEWORD : flags
end
datatype
TemplateType =
TemplateDefault
| TemplateHandle of Dialog.DLGTEMPLATE
| TemplateResource of HINSTANCE * Resource.RESID
type FINDREPLACE =
{
owner : HWND,
template: TemplateType,
flags: FindReplaceFlags.flags,
findWhat: string,
replaceWith: string,
bufferSize: int
}
val FindText : FINDREPLACE -> HWND
val ReplaceText : FINDREPLACE -> HWND
(* GetOpenFileName and GetSaveFileName *)
structure OpenFileFlags :
sig
include BIT_FLAGS
val OFN_ALLOWMULTISELECT : flags
val OFN_CREATEPROMPT : flags
val OFN_EXPLORER : flags
val OFN_EXTENSIONDIFFERENT : flags
val OFN_FILEMUSTEXIST : flags
val OFN_HIDEREADONLY : flags
val OFN_LONGNAMES : flags
val OFN_NOCHANGEDIR : flags
val OFN_NODEREFERENCELINKS : flags
val OFN_NOLONGNAMES : flags
val OFN_NONETWORKBUTTON : flags
val OFN_NOREADONLYRETURN : flags
val OFN_NOTESTFILECREATE : flags
val OFN_NOVALIDATE : flags
val OFN_OVERWRITEPROMPT : flags
val OFN_PATHMUSTEXIST : flags
val OFN_READONLY : flags
val OFN_SHAREAWARE : flags
val OFN_SHOWHELP : flags
end
type OPENFILENAME =
{
owner: HWND option,
template: TemplateType,
filter: (string * string) list,
customFilter: (string * string) option,
filterIndex: int,
file: string, (* Initial value of file and returned result. *)
maxFile: int, (* Max size of expected file name. *)
fileTitle : string,
initialDir: string option,
title: string option, (* Optional title - default is Save or Open. *)
flags: OpenFileFlags.flags,
defExt: string option
}
val GetFileTitle : string -> string
val GetOpenFileName : OPENFILENAME -> OPENFILENAME option
val GetSaveFileName : OPENFILENAME -> OPENFILENAME option
(* PageSetupDlg *)
structure PageSetupFlags :
sig
include BIT_FLAGS
val PSD_DEFAULTMINMARGINS : flags
val PSD_DISABLEMARGINS : flags
val PSD_DISABLEORIENTATION : flags
val PSD_DISABLEPAGEPAINTING : flags
val PSD_DISABLEPAPER : flags
val PSD_DISABLEPRINTER : flags
val PSD_INHUNDREDTHSOFMILLIMETERS : flags
val PSD_INTHOUSANDTHSOFINCHES : flags
val PSD_MARGINS : flags
val PSD_MINMARGINS : flags
val PSD_NONETWORKBUTTON : flags
val PSD_NOWARNING : flags
val PSD_RETURNDEFAULT : flags
val PSD_SHOWHELP : flags
end
type PAGESETUPDLG =
{
owner: HWND option,
devMode: DeviceContext.DEVMODE option,
devNames: DeviceContext.DEVNAMES option,
flags: PageSetupFlags.flags,
paperSize: POINT,
minMargin: RECT,
margin: RECT
(* For the moment we ignore the other options. *)
}
val PageSetupDlg : PAGESETUPDLG -> PAGESETUPDLG option
(* PrintDlg *)
structure PrintDlgFlags :
sig
include BIT_FLAGS
val PD_ALLPAGES : flags
val PD_COLLATE : flags
val PD_DISABLEPRINTTOFILE : flags
val PD_HIDEPRINTTOFILE : flags
val PD_NONETWORKBUTTON : flags
val PD_NOPAGENUMS : flags
val PD_NOSELECTION : flags
val PD_NOWARNING : flags
val PD_PAGENUMS : flags
val PD_PRINTSETUP : flags
val PD_PRINTTOFILE : flags
val PD_RETURNDC : flags
val PD_RETURNDEFAULT : flags
val PD_RETURNIC : flags
val PD_SELECTION : flags
val PD_SHOWHELP : flags
val PD_USEDEVMODECOPIES : flags
val PD_USEDEVMODECOPIESANDCOLLATE : flags
end
type PRINTDLG =
{
owner: HWND option,
devMode: DeviceContext.DEVMODE option,
devNames: DeviceContext.DEVNAMES option,
context: HDC option,
flags: PrintDlgFlags.flags,
fromPage: int,
toPage: int,
minPage: int,
maxPage: int,
copies: int
(* For the moment we ignore the other options. *)
}
val PrintDlg : PRINTDLG -> PRINTDLG option
end
Generally these functions create modal dialogue boxes. They take a configuration structure as an argument and return an option type. NONE is returned if the user presses Cancel. If the user presses OK the result is SOME with a modified structure containing the user's input.
FindText(findReplace): HWND
ReplaceText(findReplace): HWND
These create modeless dialogues and return a handle to the window for the dialogue.
They send FINDMSGSTRING messages to the
parent window to indicate various changes of state.