1. ChooseColor
函数功能:该函数创建一个能使用户从中选择颜色的通用颜色对话框。
函数原型:BOOL ChooseColor(LPCHOOSECOLOR IpCC);
参数:
lpCC:指向一个包括初始化对话框信息的CHOOSECOLOR结构。当ChooseColor函数返回时,此结构含有有关用户颜色选择的信息。
返回值:如果用户点击对话框中的OK按钮,返回值为非零值。CHOOSECOLOR结构中的rgbResult成员含有用户选择的颜色的RGB颜色值。如果用户取消或关闭Color对话框或错误出现,返回值为零。若想获得更多错误信息,请调用CommDlgExtondedError函数,此函数的返回值为下列中的一个:
CDERR_FINDRESFAILURE;CDERR_MEMLOCKFAILURE;CDERR_INITIALIZATION;
CDERR_NOHINSTANCE;CDERR_LOCKRESFAILURE;CDERR_NOHOOK
CDERR_LOADRESFAILURE;CDERR_NOTEMPLATE;CDERR_LOADSTRFAlLURE;
CDERR_STRUCTSIZE;CDERR_MEMALLOCFAILURE
备注:Color对话框不支持彩色调色板,对话框提供的颜色的选择仅限于系统颜色和这些颜色的混合值,可以为对话框提供一个CCHOOKProc程序,此挂钩程序能处理发送给对话框的信息。通过建立CHOOSECOLOR结构中Flags成员的CC_ENABLEHOOK标志和指定IpfnHook成员中挂钩程序的地址,可使挂钩程序生效。
速查:Windows NT:3.1及以上版本;Windows:95及以上版本;Windows CE:2.0及以上版本;头文件:commdlg.h;库文件:commdlg32.lib;Unicode:在Windows NT环境中实现为Unicode和ANSI两个版本。
2. ChooseFont
函数功能:该函数创建一个使用户选择逻辑字体属性的对话框,这些属性包括字体名称、字体风格(如粗体、斜体或正常体)、字号、效果(如强调线,下划线或字体颜色)和手写体(或字符集)。
函数原型:BOOL ChooseFont(LPCHOOSEFONT Ipcf);
参数:
Ipcf:指向一个含有初始化对话框信息的CHOOSEFONT结构。当返回ChooseFont函数时,此结构含有用户对字体选择的信息。
返回值:如果用户点击对话框的OK按钮,返回值为非零值,CHOOSEFONT结构中的成员表明用户的选择。如果用户取消或关闭Font对话框或出现错误信息,返回值为零。若想获得更多错误信息。请调用CommDlgExtendedError函数,其返回值如下:
CDERR_FINDRESFAILURE;CDERR_NOHINSTANCE;CDERR_INITIALIZATION;CDERR_NOHOOK
CDERR_LOCKRESFAILURE;CDERR_NOTEMPLATE;CDERR_LOADRESFAILURE;
CDERR_STRUCTSIZE;CDERR_LOADSTRFAILURE;CDERR_MAXLESSTHANMIN
CDERR_MEMALLOCFAILURE;CDERR_NOFONTS;CDERR_MEMLOCKFAILURE
备注:可以为Font对话框提供一个CFHOOKProc挂钩程序。此挂钩程序能够处理发送给对话框的信息。
通过建立CHOOSEFONT结构中Flags成员的CE ENABLEHOOK标志和指定IPfn Hook成员中挂钩程序的地址可以使挂钩程序有效。
挂钩程序可以把信息WM_CHOOSEFONT_GETLOGLONT,WM_CHOOSEFONT_SETFLAGS和
WM_CHOOSEFONT_SETLOGFONT消息发送给对话框以便得到和创建当前值和对话框的图标。
速查:Windows NT:3.1及以一上版本;Windows:95及以上版本;Windows CE:不支持;头文件:Commdlg.h;库文件:comdlg32.lib;Unicode:在Windows NT环境中实现为Unicode和ANSI两个版本。
3. CommDlgExtendedEorror
函数功能:该函数返回一个对话框错误代码,此代码显示出在执行下列对话框函数时要出现的最近的错误:ChooseColor,GetOpenFileName,ChooseFont,GetSaveFileName,FindText,PrintDlg,ReplaceText,PageSetpDlg。
函数原型:DWORD CommDlgExtendedError(VOID)
参数:无。
返回值:如果最近一次对话框函数调用成功,返回值不确定,如果对话框函数因为用户关闭或取消对话框而返回FALSE,则返回值为零。否则返回值是非零错误代码。有关更多的信息,参见下列说明部分。
备注:CommDlgExtendedError函数可以返回公共对话框函数中的一般的错误代码。
另外,也返回某一具体公共对话框的错误代码。由CommDlgExtendedError返回的错误代码在CDERR.H文件里定义:
下面是CommDlgExtendedError的返回错误代码值。
CDERR_DIALOGFAILURE:对话框不能创建。DialogBox函数对对话框函数的调用失败,例如如果公共对话框的调用指定一个无效的窗口句柄,则此种错误产生。
CDERR_FINDRESFAILURE:公共对话框函数没能找到指定资源。
CDERR_INITIALIZATION:公共对话框函数在初始化过程中失败。当没有足够内存时此错误出现。
CDERR_LOADRESFAILURE:公共对话框函数没能调出指定的资源。
CDERR_LOADSTRFAILURE:公共对话框函数没能调出指定的串。
CDERR_LOCKRESFAILURE:公共对话框函数没能销定指定的资源。
CDERR_EMAILCOLFAILURE;公共对话框函数不能为内部结构分配内存。
CDERR_NOHINSTANCE:在对应的公共对话框初始化结构Flags成员中设置ENABLETEMPLATE标志,但是在提供相应的事例句柄时出错。
CDERR_NOHOOK:在对应的公共对话框初始化结构Flags成员中设置ENABLEHOOK标志,但是在提供相应的挂钩程序指针时出错。
CDERR_NOTEMPLATE:在对应的公共对话框初始化结构Flag成员中设置ENABLETEMPLATE标志,但是在提供相应的模板时出错。
CDERR_REGISTERMSGFAIL:当RegisterWindowMessage函数被公共对话框函数调用时,该函数返回错误代码。
CDERR_STRUCTSIZE:对应的公共对话框初始化结构旧IStructSize成无效成员。
下列为Print Dlg函数的返回值。
PDERR_CREATEICFAILURE:当PrintDlg函数想创建一个信息表时出错。
PDERR_DEFAIKTDFFERENT:利用在DEVNAMES结构中wDefault成员指定的DN_DEFAULTPRN标志,可以调用PrintDlg函数。但是被另外一个结构成员描述的打印机与当前缺省的打印机不匹配。(此错误发生在储存DEVNAMES结构和用户利用控制面板改变缺省打印机时)。要使用DEVNAMES结构所描述的缺省打印机,必须清空DN_DEFAULTPRN标志并且要再一次调用PrintDlg。要使用缺省打印机,必须用NULL取代DEVNAMES结构俐DEVMODE结构,如果此结构存在的话),并且要再一次调用PrintDlg函数。
PDERR_DNDMMISMATCH:OEVMOOE和DEVNAMFS结构中的数据描述了两种不同的打印机。
PDERR_GETDEVMODEFAIL;打印机驱动程序不能初始化一个DEVMODE结构(这种错误代码只用于Windows 3.0及以上版本的打印机驱动程序)。
PDERR_INITFAILURE:PrintDlg函数不能初始化,并且没有更多的错误代码来描述此错误。
PDERR_LOADDRVFAILURE:PrinDlg函数不能为指定的打印机装备设备驱动器。
POERR_NODEFAULTPRN:不存在缺省打印机。
POERR_NODEVKES:未发现打印机驱动程序。
PDERR_PARAEFAILURE:PrintDlg函数在分析WIN.INI文件中的[devces]部分的字符串时出错。
PDERR_PRINTERNOTFOUND;WIN.INI文件的[device]部分不包含所请求打印机的入口
PDERR_RETDEFFAILURE_PD:RETURNDEFAULT标志被指定在PRINTDLG结构的Flags成员中。但hDevMode或hDevNames成员不是NULL。
PDERR_SETUPFAILURE:PrintDlg函数在装载所需要的资源时出错。
下面是ChooseFont函数的返回值。
CFERR_MAXLESSTHANMIN:CHOOSEFONT结构中的nSizeMax成员所给定的大小小于nSizeMin成员给定的大小。
CFERR_NOFONTS:不存在字体。
下面是GetOpenFileName和GetSaveFileName函数的返回值。
FNERR_BUFFERTOOSMALL:由OPENFILENAME结构的lpstrFile成员指向的缓冲区对由用户指定的文件名来说太小。前两种IpstrFile缓冲区的字节含有一个指定大小的整型值。用来存放全文件名。
FNERR_INVAIDFILENAME:文件名无效。
FNERR_SUBASSFAILIIRE:由于没有足够内存,在对列表框分类时出错。
下面是FindText和ReplaceText函数的返回值。
FRERR_BUFFERLENGTHZERO:结构FINDREPLACE中的一个成员指向一个无效的缓冲区。
在Windows CE中Windows CE支持另外的四种返回值,如下:
CDERR_REGISTRYFAILURE 公共对话框函数无法读注册表。
下面的一些返回值只适用于PrintDlg函数。
PDERR_NOPORTS:没有注册的端口PDERR_NOPRINTERS:没有注册的打印机
PDERR_CREATEDCFAILURE:CreateDC调用失败
Windows CE不支持CDERR_LOADSTRFAILURE、CDERR_MEMLOCKFAILURE或CDERR_REGISTERMSGFAIL返回值。Windows CE也不支持任何PDERR_错误值。
速查:Windows NT:3.1及以上版本;Windows:95及以上版本;Windows CE:1.0及以上版本:头文件:commdlg.h;库文件:comdlg32.lib。
4. FindText
函数功能:该函数创建一个系统定义的无模式Find对话框,为使用户指定一个串来查找文本内的文字。
函数原型:HWND FindText(LPFINDREPLACE lpfr);
参数:
Ipfr:指向一个FINDEPLACE结构,此结构包含用来初始对话框的信息。对话框用此结构把用户输入的信息传送到应用程序。有关更多的信息,请参见下面说明部分。
返回值:如果函数调用成功,返回值是对话框的窗口句柄。可以使用窗口句柄与对话框联系或关闭它;如果函数调用失败,返回值为NULL。若想获得更多的错误信息,请调用CommDlgExtendedError函数。其返回值如下:
CDERR_FINDRESFAILURE;CDERR_MEMLOCKFAILURE;CDERR_INITIALIZATION
CDERR_NOHINSTANCE;CDERR_LOCKRESFAILURE;CDERR_NOHOOK
CDERR_LOADRESFAILURE;CDERR_NOTEMPLATE;CDERR_LOADSTRFAILURE
CDERR_STRUCTSIZE;CDERR_MEMALLOCFAILURE;FRERR_BUFFERLENGTHZERO
备注:FindText函数不执行查找操作,相反,对话框把FINDMSGSTRING己登记的信息传送到对话框窗口的窗口函数。当创建对话框时FINDReplace结构中的hwndCwner成员标识窗口。
调用Find Text函数前,必须调用RegisterWindowMessage函数以得到FINDMSGSTRING信息的标识符,对话框函数在用户点击FindNext按钮或对话框被关闭时利用此标识符传送信息。FINDMSGSTRING信息的IParam参数包含一个指向FINDREPLACE结构的指针,此结构的Flags成员显示开诚信息的事件。
其他成员显示用户的输入。
若想创建对话框,必须利用应用程序的主信息链中的IsDialogMessage函数来保证对话框正确处理键盘输入,例如Tab和Esc键。IsDialogMessage返回值显示Find对话框是否处理信息。
可以为Find对话框提供一个挂钩函数FRHookProc。挂钩函数可处理发送到对话框中的信息。为使挂钩函数生效,可设置HNDREPLACE结构的Flags成员的FR_ENABLEHOOK标志,且指定IpfnHook成员中挂钩函数的地址。
速查:Windows NT:3.1及以上版本;Windows:95及以上版本;Windows CE:不支持;头文件:commdlg.h;库文件:comdlg32.lib;Unicode:在Windows NT环境中实现为Unicode和ANSI两个版本。
5 GetFileTitle
函数功能:该函数返回由IpszFile参数标识的文件名。
函数原型:short GetFTitle(LPCTSTR LPTSTR IpszTitle,WORD cbBuf);
参数:
IpszFile:指向一个文件名或文件位置的指针。
IpszTitle:指向一个缓冲区,在此缓冲区中函数复制文件名。
chBuf:指定由IpszTitle函数指向的缓冲的字节长度。
返回值:如果函数调用成功,返回值为零;如果文件名无效,返回值为一负值。如果由IpszTitle参数指向的缓冲区的太小,返回值为一正整数,其值指定了所需缓冲区的大小。所需缓冲区的大小还包括结尾的NULL字符。
备注:如果由IpszFile参数指向的缓冲区包含下列任何一个成员,GetFileTitle函数返回一个错误信息值。
一个空字符串;一个含有星号()、开括号([)、闭方括号(])的串、一个以冒号(:)、斜杠(/)或倒斜杠结尾的串;一个长度超过缓冲区长度的串;一个无效字符(如,一个空格或一个不能打印的字母):为得到文件名所需的缓冲区的大小,用设置为NULL的IpszTitle和设置为零的cbBuf调用函数。函数将返回所需的大小。
GetFileTitle函数返回一个串,系统应用此串为用户显示文件名。这就意味着如果返回串应用在文件系统函数的调用中不可能准确地标识文件。
如果证IpszTitle缓冲区太小,GetFile Title返回的大小需要含有显示名。在IpszFile缓冲区指定的需要的大小和字符之间没有许可的联系。
速查:Windows NT:3.1及以上版本:Windows:95及以上版本:Windows CE:不支持:头文件:Commdlg.h;库文件:comdlg32.fib;Unicode:在Windows NT环境中实现为Unicode和ANSI两个版本。
6 GetOpenFileName
函数功能:该函数创建一个Open公共对话框,使用户指定驱动器、目录和文件名、或使用户打开文件。
函数原型:BOOL GetOpenFileName(LPOPENFILENAME Ipofn);
参数:
Ipofn:指向包含初始化对话框的信息的一个OPENFILENAME结构。当OpenfileName函数返回时,此结构包含有关用户文件选择的信息。
返回值:如果用户指定了一个文件名,点击OK按钮,返回值为非零。由OPENFILENAME结构的IPstrFile成员指向的缓冲区含有全路径和用户指定的文件名。如果用户取消或关闭Open对话框或错误出现,返回值为零。若想获得更多的错误信息,请调用CommDlgExtendedError函数。
备注:从Windows 95和Windows NT 4.0版开始,缺省的Open对话框提供了与Windows Explorer相似的用户界面特征。可以为一个浏览器风格的Open对话框提供一个OFNHOOKProc挂钩函数。设置OPENFILFNAME结构的Flags成员中OFN_EXPLORER和OFN_ENABLEHOOK标示和指定IpfnHook成员中挂钩函数的地址,可使挂钩函数生效。
Windows 95和Windows NT仍支持旧风格的Open对话框以便维持与一个Windows 3.1或Windows NT3.51用户界面相一致的用户界面。使OFNHOOKProcOldstyle挂钩函数生效和保证OFN_EXPLORER标志没有被设置,就可以显示旧式的Open对话框。
为显示允许用户选择一个目录而不是一个文件的对话框,要调用SHBrowseForFolder函数。
Windows CE:并不是每一个OPENFILENAME结构的成员都在Windows CE中被定义。有关定义成员的更多的信息,请参见OPENFILENAME结构的资料主题。
速查:Windows NT:3.1及以上版本;Windows:95及以上版本;Windows CE:1.0及以上版本;头文件:COmmdlg.h;库文件:comdlg32.lib;Unlcode:在Windows NT环境中实现为Unicode和ANSI两个版本。
7 GetSaveFileName
函数功能:该函数创建一个Save公共对话框,以便用户指定驱动器、目录和文件名。
函数原型:BOOL GetSaveFileName(LPOPENFILENAME Ipofn);
参数:
Ipofn:指向一个包含初始化对话框信息的OPENFILENAME结构。当GetsaveFileName函数返回时,此结构含有关于用户文件选择的信息。
返回值:如果用户指定了一个文件名且点击OK按钮,返回值为非零值。由OPENFILENAME结构中的归IpstrFile成员指向的缓冲区含有全路径和用户指定的文件名。如果用户取消或关闭Save对话框或错误出现,返回值为零。若想获得有关更多的错误信息,请调用CommDlgExtendError函数,其返回值同GetOpenFileName返回值。
速查:Windows NT:3.1引及以上版本;Windows:95及以上版本;Windows CE:1.0及以上版本;头文件:commdlg.h;库文件:comdlg32.lib;Unicode:在Windows NT环境中实现为Unicode和ANSI两个版本。
8 PageSetupDlg
函数功能:该函数创建一个PageSetup对话框,此对话框能使用户指定打印页的属性。这些属性包括纸张大小和来源,送纸方向和页边距。
函数原型:BOOL PageSetupDlg(LPPAGESETUPDLGI ppsd);
参数:
Ippsd:指向一个包含初始化对话框信息的PAGESETUPDLG结构。当函数返回时,该结构存放有关用户选择的信息。
返回值:如果用户点击OK钮,返回值为非零值,Ippsp参数指向的PAGESETUPDLG结构中的成员显示用户的选择。如果用户取消或关闭PageSetup对话框或错误出现,返回值为零。若想获得更多的错误信息,请调用CommDlgExtendedError函数
速查:Windows NT:3.1及以上版本;Windows:95及以上版本;Windows CE:不支持;头文件:commdlg.h;库文件:commdlg32.lib;Unicode:在Windows NT环境中实现为Unicode和ANSI两个版本。
9 PrintDlg
函数功能:该函数显示打印对话框或打印设置对话框。打印对话框使用户指定特殊的打印工作的特点。
打印设置对话框不能应用在新应用程序中,它已经被PageSetupDlg函数创建的打印设置公共对话框所替代。
函数原型:BOOL PrintDIg(LPPRINTDLG Ippd);
参数:
Ippd:指向一个含有初始化对话框信息的PRINTDLG结构。当PRINTDLG函数返回时,此结构含有关用户选择的信息。
返回值:如果用户点击OK按钮,返回值为非零值。由lppd参数指向的PRINTDLG结构中的成员显示用户的选择。如果用户取消或关闭Print或PrinterSetup对话框或错误出现,返回值为零。若想获得更多的错误信息,请调用CommDlgError函数。如果用户取消或关闭对话框,函数返回零值:否则,返回值如下:
CDERR_FINDRESFAILURE PDERR_CRETELCFAILUPE
COERR_INITIALIZATION PDERR_DEFAULTDIFFERENT
CDERR_LOADRESFAILURE PDERR_DNDMMISMATCH
CDERR_LOADSTRFAILURE PDERR_GETDEVMODEFAIL
CKERR_LOCKRESFAILURE PDERR_INITFAILURE
CDERR_MEMALLOCFAILURE PDERR LOADDRVFAILURE
CDERR_MEMLOCKFAILURE PDERR_NODEFAULTPRN
CDERR_NOHINSTANCE PDERR_NODEVICES
CDFRR_NOHOOK PDERR_PARSEFAILURE
CDERR_NOTEMPLATE PDERR_PRINTERNOTFOUND
CDERR_STRUCTSIZE PDERR_RETDEFFAILURE
备注:如果挂钩函数(由PRINTDLG结构中的IpfnrintHOOk成员或IpfnSetupHOOk成员指向的)处理WM_CTLCOLORDLG信息,挂钩函数必须返回一个刷子句柄,此刷了用来刷控制背景。
Windows NT 5.0以及以后的版本:可用PrintDlgEx函数来显示一个Print属性页,此属性页有一个含有Print公共对话框相似的控制的General页,其控制与Print公共对话框中的控制相似。
Windows CE:PRINTDLG结构包含Windows CE中不同的成员。
速查:Windows NT:3.1及以上版本;Windows:95及以上版本;Windows CE:2.0及以上版本;头文件:commdlg.h;库文件:comdlg32.lih;Unicode:在Windows NT环境中实现为Unicode和ANSI两个版本。