Flags 位標記的設置,你可以使用來(lái)初始化對話(huà)框。當對話(huà)框返回時(shí),它設置的這些標記指出用戶(hù)的輸入。這個(gè)成員可以是下列標記的組合。 |
標記含意 OFN_ALLOWMULTISELECT 指定文件名列表框允許多選。如果同時(shí)你設置了OFN_EXPLORER標記,對話(huà)框使用Explorer風(fēng)格用戶(hù)界面;否則它使用舊風(fēng)格用戶(hù)界面。 如果用戶(hù)選擇了一個(gè)以上的文件,lpstrFile 緩沖返回當前目錄下所有被選擇的文件的文件名。nFileOffset 成員是到第一個(gè)文件名的偏移量(字節或字符),并且nFileExtension 成員不被使用。對于Explorer風(fēng)格對話(huà)框,目錄和文件名是被NULL分隔的,在最后的文件名后帶有額外的NULL。這個(gè)格式使Explorer風(fēng)格的對話(huà)框能返回包含空格的長(cháng)文件名。對于舊風(fēng)格對話(huà)框,目錄和文件字符串是被空格分隔的,函數為帶有空格的文件名使用短文件名。你可以使用FindFirstFile 函數在短文件名和長(cháng)文件名之間轉換。 如果你為一個(gè)舊風(fēng)格對話(huà)框指定了一個(gè)定制的模板,文件名列表框的定義必須包含LBS_EXTENDEDSEL值。 OFN_CREATEPROMPT 如果用戶(hù)指定了一個(gè)不存在的文件,這個(gè)標記使用對話(huà)框能提示用戶(hù)是否新建這個(gè)文件。如果用戶(hù)選擇了新建這個(gè)文件,對話(huà)框關(guān)閉并且函數返回指定的名字;否則,對話(huà)框繼續停留。如果你使用帶有OFN_ALLOWMULTISELECT標記的這個(gè)標記,對話(huà)框允許用戶(hù)去指定一個(gè)不存在的文件。 OFN_DONTADDTORECENT Windows 2000: 防止系統為選擇的文件增加快捷鏈接到最近使用文檔中。要找回目錄的位置,調用還有CSIDL_RECENT標記的SHGetSpecialFolderLocation 函數。 OFN_ENABLEHOOK 激活在lpfnHook 成員中指定的鉤子函數。 OFN_ENABLEINCLUDENOTIFY Windows 2000:
當用戶(hù)打開(kāi)一個(gè)文件夾時(shí),引起對話(huà)框發(fā)送CDN_INCLUDEITEM 通知消息到你的OFNHookProc 程序。對話(huà)框為在最近打開(kāi)的文件夾中的每一個(gè)項目發(fā)送一個(gè)通知。這些消息使你能夠控制那些在對話(huà)框中顯示的文件夾項目的列表。 OFN_ENABLESIZING Windows 2000,Windows 98: 使Explorer風(fēng)格的對話(huà)框可以使用鼠標或鍵盤(pán)調整大小。缺省時(shí),Explorer風(fēng)格的打開(kāi)和另存為對話(huà)框允許被調整大小,不顧這個(gè)標記是否被設置。這標記僅在你提供了一個(gè)鉤子程序或定制模板時(shí)是必需的。舊風(fēng)格的對話(huà)框不允許調整大小。 OFN_ENABLETEMPLATE 指出lpTemplateName 成員是指向對話(huà)框模板資源的名字,這個(gè)模板資源在能被hInstance 成員識別的模塊中。 如果OFN_EXPLORER標記被設置,系統使用指定的模板去建立一個(gè)對話(huà)框,是默認Explorer風(fēng)格對話(huà)框的子窗口。如果OFN_EXPLORER標記沒(méi)有被設置,系統使用舊風(fēng)格的對話(huà)框替代默認的對話(huà)框。 OFN_ENABLETEMPLATEHANDLE 指出hInstance 成員能識別的包含預載對話(huà)框模板的數據塊。如果這個(gè)標記被指定的,系統忽略lpTemplateName 。 如果OFN_EXPLORER標記被設置,系統使用指定的模板去建立一個(gè)對話(huà)框,是默認Explorer風(fēng)格對話(huà)框的子窗口。如果OFN_EXPLORER標記沒(méi)有被設置,系統使用模板去建立一個(gè)舊風(fēng)格對話(huà)框替代默認對話(huà)框。 OFN_EXPLORER 指出任何打開(kāi)或另存為對話(huà)框使用新的Explorer風(fēng)格的用戶(hù)化模塊。關(guān)于更多的信息,參見(jiàn)Explorer-Style Hook Procedures和Explorer-Style Custom Templates。 缺省下,打開(kāi)和另存為對話(huà)框使用Explorer風(fēng)格用戶(hù)界面,不顧這個(gè)標記是否設置。這個(gè)標記僅在你提供了一個(gè)鉤子程序或定制模板或設置了OFN_ALLOWMULTISELECT標記時(shí)是必需的。 如果你想使用舊風(fēng)格的界面,省略OFN_EXPLORER 標記,并且提供一個(gè)代替的舊風(fēng)格模板或鉤子程序。如果你想用舊風(fēng)格但不需要一個(gè)定制模板或鉤子程序,簡(jiǎn)單的提供一個(gè)鉤子程序,讓它返回FALSE。 OFN_EXTENSIONDIFFERENT 指定用戶(hù)輸入的一個(gè)文件的擴展名與lpstrDefExt 指定的擴展名不同。如果lpstrDefExt 是NULL,函數不使用這個(gè)標記。 OFN_FILEMUSTEXIST 指定用戶(hù)僅可以在文件名登錄字段中輸入已存在的文件的名字。如果這個(gè)標記被指定的并且用戶(hù)輸入了一個(gè)無(wú)效的名字,對話(huà)框程序顯示一個(gè)等待消息框。如果這個(gè)標記被指定,OFN_PATHMUSTEXIST標記也被使用。 OFN_FORCESHOWHIDDEN Windows 2000: 強制顯示系統和隱藏屬性的文件,從而壓倒用戶(hù)設置的顯示或不顯示隱藏文件。否則,帶有系統和隱藏標記的文件不被顯示。 OFN_HIDEREADONLY 隱藏只讀復選框。 OFN_LONGNAMES 對于舊風(fēng)格對話(huà)框,這個(gè)標記引起對話(huà)框使用長(cháng)文件名。如果這個(gè)標記沒(méi)有被指定,或如果OFN_ALLOWMULTISELECT標記也被設置,舊風(fēng)格對話(huà)框為帶有空格的文件名使用短文件名(8.3格式)。 Explorer風(fēng)格對話(huà)框忽略這個(gè)標記,通常顯示長(cháng)文件名。 OFN_NOCHANGEDIR 如果當搜索文件時(shí)用戶(hù)改變了目錄的時(shí)候,恢復當前目錄到它的初始值。 OFN_NODEREFERENCELINKS 引導對話(huà)框為選擇的快捷方式(.LNK)文件返回路徑和文件名。如果這個(gè)值沒(méi)有被指定,對話(huà)框返回這個(gè)快捷方式所引用文件的路徑和文件名。 OFN_NOLONGNAMES 對于舊風(fēng)格對話(huà)框,這個(gè)標識引起對話(huà)框去使用短文件名(8.3格式)。 Explorer風(fēng)格對話(huà)框忽略這個(gè)標記,通常顯示長(cháng)文件名。 OFN_NONETWORKBUTTON 隱藏和顯示風(fēng)格按鈕。 OFN_NOREADONLYRETURN 指定返回的文件不帶有只讀復選框,不是在寫(xiě)保護的目錄中。 OFN_NOTESTFILECREATE 指定文件不是在對話(huà)框關(guān)閉前建立的。如果應用程序保存文件到一個(gè)建立的非映象風(fēng)格共享上,這個(gè)標記應該被指定的。當一個(gè)應用程序指定了這標記,庫不能檢查寫(xiě)保護,磁盤(pán)滿(mǎn),打開(kāi)驅動(dòng)器門(mén)或網(wǎng)絡(luò )保護。應用程序使用這個(gè)標記必須小心執行文件操作,因為一旦文件被關(guān)閉,它不能重新打開(kāi)。 OFN_NOVALIDATE 指定公共對話(huà)框允許在返回的文件名中有無(wú)效的字符。典型的,正在調用的程序使用一個(gè)鉤子程序通過(guò)FILEOKSTRING 消息檢查文件名。如果在編輯控件中的文本框是空的或只包含了空格,那么文件和目錄列表框是被更新的。如果編輯控件中的文本框包含了別的東西,那么nFileOffset和 nFileExtension 的設置值是通過(guò)分析文本產(chǎn)生的。沒(méi)有默認的擴展名被添加到文本,也沒(méi)有文本被復制到lpstrFileTitle 指定的緩沖。 如果通過(guò)nFileOffset 指定的值比0小,文件是無(wú)效的。否則,文件名是有效的。如果OFN_NOVALIDATE沒(méi)有被指定,nFileExtension 和nFileOffset 可以被使用。 OFN_OVERWRITEPROMPT 如果選擇的文件已經(jīng)存在,使用另存為對話(huà)框產(chǎn)生一個(gè)消息框。用戶(hù)必須確認是否復蓋這個(gè)文件。 OFN_PATHMUSTEXIST 指定用戶(hù)僅能輸入的路徑和文件名。如果這個(gè)標記被使用并且用戶(hù)在文件名輸入字段中鍵入了一個(gè)用效的路徑和文件名,對話(huà)框函數顯示一個(gè)等待消息。 OFN_READONLY 當對話(huà)框建立時(shí),顯示被選擇的只讀復選框。這個(gè)標記指出當對話(huà)框被關(guān)閉時(shí)只讀復選框的狀態(tài)。 OFN_SHAREAWARE 指出如果調用OpenFile 函數因為網(wǎng)絡(luò )共享沖突而失敗,這個(gè)錯誤被忽略并且對話(huà)框返回選擇的文件名。 如果這個(gè)標記沒(méi)有被設置,當用戶(hù)選擇的文件名發(fā)生網(wǎng)絡(luò )共享沖突時(shí),對話(huà)框發(fā)送通知到你的鉤子程序。如果你設置了OFN_EXPLORER標記,對話(huà)框發(fā)送CDN_SHAREVIOLATION 消息到鉤子程序。如果你沒(méi)有設置OFN_EXPLORER,對話(huà)框發(fā)送SHAREVISTRING 注冊的消息到鉤子程序。 OFN_SHOWHELP 使對話(huà)框顯示幫助按鈕。hwndOwner 成員必須指定一個(gè)窗口,這個(gè)窗口作為接收對話(huà)框發(fā)送的HELPMSGSTRING 注冊的消息,當用戶(hù)單擊幫助按鈕時(shí)對話(huà)框發(fā)送這個(gè)消息。 當用戶(hù)單擊幫助按鈕時(shí),一個(gè)Explorer風(fēng)格的對話(huà)框發(fā)送CDN_HELP 通知消息到你的鉤子程序。