1、 打開和儲存對話框:
(1)使用GetOpenFileName(LPOPENFILENAME Ipofn)建立打開對話框;
Lpofn包含了初始化對話框的資訊,當此函數傳回時這個結構包含檔案選擇的資訊;l
typedef struct tagOFN {
DWORD lStructSize; //結構大小
HWND hwndOwner; //擁有這個對話框的視窗
HINSTANCE hInstance; //擁有此對話框的子產品執行個體句柄
LPCTSTR lpstrFilter; //包含過濾資訊每個過濾資訊含兩個字元串用/0結束,例”Text Files/0*.TXT”最
後的過濾資訊要/0/0結束,例: "All Files/0*.*/0/0"
LPTSTR lpstrCustomFilter; //預設的過濾資訊
DWORD nMaxCustFilter; ///預設的過濾資訊大小,當lpstrCustomFilter不為空時,這個至少要大于40
DWORD nFilterIndex; //目前選擇的過濾資訊索引,當為0時使用lpstrCustomFilter
LPTSTR lpstrFile; //包含使用者標明檔案的全路徑和檔案名、擴充名
DWORD nMaxFile; //lpstrFile的大小
LPTSTR lpstrFileTitle; //包含使用者標明檔案的檔案名、擴充名
DWORD nMaxFileTitle; //lpstrFileTitle的大小
LPCTSTR lpstrInitialDir; //預設的顯示路徑
LPCTSTR lpstrTitle; //标題
DWORD Flags; //各種标志
WORD nFileOffset; //指定lpstrFile中檔案名的偏移量,如lpstrFile為"c:/dir1/dir2/file.ext",則
nFileOffset的值為12;
WORD nFileExtension; //指定lpstrFile中擴充名的偏移量如lpstrFile為"c:/dir1/dir2/file.ext",則nFileExtension的值為18
LPCTSTR lpstrDefExt; //預設擴充名
LPARAM lCustData; //保留吧
LPOFNHOOKPROC lpfnHook; //可用來重新設定回調函數
LPCTSTR lpTemplateName; //以下可以都為NULL了
#if (_WIN32_WINNT >= 0x0500)
void * pvReserved;
DWORD dwReserved;
DWORD FlagsEx;
#endif // (_WIN32_WINNT >= 0x0500)
} OPENFILENAME, *LPOPENFILENAME;
(2)使用GetSaveFileName建立儲存對話框;
2、浏覽檔案夾對話框:
使用SHBrowseForFolder建立
char DirPath[MAX_PATH];
BROWSEINFO bi;
ITEMIDLIST * pidl;
bi.hwndOwner = NULL;
bi.pidlRoot = NULL;
bi.pszDisplayName = Dir;
bi.lpszTitle = "請選擇圖檔檔案夾。";
bi.ulFlags = BIF_RETURNONLYFSDIRS;
bi.lpfn = NULL;
bi.lParam = 0;
bi.iImage = 0;
pidl = SHBrowseForFolder(&bi);
if(pidl == NULL)
DirPath[0] = 0;
if(!SHGetPathFromIDList(pidl,Dir))
DirPath[0] = 0;
//釋放記憶體
LPMALLOC pMalloc;
if (SUCCEEDED(SHGetMalloc(&pMalloc)))
{
pMalloc->Free(pidl);
(void)pMalloc->Release();
}
3、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成員中挂鈎程式的位址,可使挂鈎程式生效。
4、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消息發送給對話框以便得到和建立目前值和對話框的圖示。
5、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成員中挂鈎函數的位址。
6、PageSetupDlg
函數功能:該函數建立一個PageSetup對話框,此對話框能使使用者指定列印頁的屬性。這些屬性包括紙張大小和來源,送紙方向和頁邊距。
函數原型:BOOL PageSetupDlg(LPPAGESETUPDLGI ppsd);
參數:
Ippsd:指向一個包含初始化對話框資訊的PAGESETUPDLG結構。當函數傳回時,該結構存放有關使用者選擇的資訊。
傳回值:如果使用者點選OK鈕,傳回值為非零值,Ippsp參數指向的PAGESETUPDLG結構中的成員顯示使用者的選擇。如果使用者取消或關閉PageSetup對話框或錯誤出現,傳回值為零。若想獲得更多的錯誤資訊,請調用CommDlgExtendedError函數
7、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資訊,挂鈎函數必須傳回一個刷子句柄,此刷了用來刷控制背景。