天天看點

公共對話框——OPENFILENAME結構

<dl></dl>

<dt>lStructSize</dt>

<dd>指定這個結構的大小,以位元組為機關。</dd>

Windows 95/98和Windows NT 4.0:特意為Windows 95/98或Windows NT 4.0,及帶有WINVER和_WIN32_WINNT &gt;= 0x0500編譯時,為這個成員使用OPENFILENAME_SIZE_VERSION_400。

Windows 2000及更高版本:這個參數使用sizeof (OPENFILENAME) 。

<dt>hwndOwner</dt>

<dd>指向所有者對話框視窗的句柄。這個成員可以是任意有效視窗句柄,或如果對話框沒有所有者它可以為NULL。</dd>

<dt>hInstance</dt>

<dd>如果在Flags成員中設定了OFN_ENABLETEMPLATEHANDLE标記,hInstance成員指向包含一個對話框模闆的記憶體對象。如果OFN_ENABLETEMPLATE标記被設定,hInstance是一個指向通過lpTemplateName成員命名的對話框模闆的子產品。如果兩者都沒有被設定,這個成員被忽略。</dd>

如果OFN_EXPLORER标記被設定,系統使用Explorer風格的預設對話框的子視窗作為指定模闆來建立一個對話框。如果OFN_EXPLORER标記沒有被設定,系統使用模闆建立一個舊風格的對話框。

<dt>lpstrFilter</dt>

<dd>指向一對以空字元結束的過濾字元串的一個緩沖。緩沖中的最後一個字元串必須以兩個NULL字元結束。</dd>

第 一個字元串是過濾器描述的顯示字元串(例如,“文本檔案”),第二個字元指定過濾樣式(例如,“*.TXT”)。要為一個顯示字元串指定多個過濾樣式,使 用分号(“;”)分隔樣式(例如,“*.TXT;*.DOC;*.BAK”)。一個樣式字元串中可以包含有效的檔案名字字元及星号(*)通配符。不能在樣 式字元串中包含空格。

系統不能改變過濾器的次序。它按lpstrFilter指定的次序顯示在檔案類型組合框中。

如果lpstrFilter是NULL,對話框不能顯示任何過濾器。

<dt>lpstrCustomFilter</dt>

<dd>指 向一個靜态緩沖,它包含了一對以空字元結束的過濾器字元串,這個字元串是為了保留使用者選擇的過濾樣式。第一個字元串是描述定制過濾器的顯示字元串,第二個 字元串是被使用者選擇的過濾器樣式。第一次你的應用程式建立對話框,你指定的第一個字元串可以是任何非空的字元串。當使用者選擇了一個檔案時,對話框複制目前 過濾樣式到第二個字元串。保留過濾樣式可以是在lpstrFilter緩沖中指定的樣式之一,或是使用者輸入的過濾器樣式。在下一次對話框被建立時系統使用這個字元串去初始化使用者自定義的檔案過濾器。如果nFilterIndex成員是0,對話框使用定制過濾器。</dd>

如果這個成員是NULL,對話框不能保留使用者自定義過濾器樣式。

如果這個成員不是NULL,nMaxCustFilter成員的值必須指定以TCHARs為機關的lpstrCustomFilter緩沖的大小。對于ANSI版本,是位元組的個數;對于Unicode版本,是字元的個數。

<dt>nMaxCustFilter</dt>

<dd>指定特意為lpstrCustomFilter準備的以TCHARs為機關的緩沖大小。對于ANSI版本,是位元組的個數;對于Unicode版本,是字元的個數。這緩沖應該最小在40個字元長。如果lpstrCustomFilter成員是NULL或是指向NULL的字元串,這個成員被忽略。</dd>

<dt>nFilterIndex</dt>

<dd>指定在檔案類型控件中目前選擇的過濾器的索引。緩沖指向被lpstrFilter包含的一對定義了的過濾器的字元串。過濾器的第一對字元串的索引值為1,第二對為2,等等。0索引指出是通過lpstrCustomFilter指定的定制過濾器。你可以為對話框指定一個索引作為最初的過濾器描述及過濾器樣式。當使用者選擇了一個檔案時,nFilterIndex傳回目前顯示的過濾器的索引。</dd>

如果nFilterIndex是0及lpstrCustomFilter是NULL,系統使用在lpstrFilter緩沖中的第一個過濾器。如果所有的三個成員都是0或NULL,系統不使用任何過濾器,在對話框的清單檔案中不顯示任何檔案。

<dt>lpstrFile</dt>

<dt>nMaxFile</dt>

<dd>指定lpstrFile緩沖的大小,以TCHARs為機關。對于ANSI版本,是位元組的個數;對于Unicode版本,是字元的個數。這個緩沖必須足夠存儲路徑和檔案名字元串,包含結尾的null字元。如果緩沖太小,GetOpenFileName和GetSaveFileName函數傳回假(FALSE)緩沖最小應該在256個字元長。</dd>

<dt>lpstrFileTitle</dt>

<dd>指向接收選擇的檔案的檔案名和擴充名的緩沖(不帶路徑資訊)。這個成員可以是NULL。</dd>

<dt>nMaxFileTitle</dt>

<dd>指定lpstrFileTitle緩沖的大小,以TCHARs為機關。對于ANSI版本,是位元組的個數;對于Unicode版本,是位元組的個數。如果lpstrFileTitle是NULL,這個成員被忽略。</dd>

<dt>lpstrInitialDir</dt>

<dd>指 向以空字元結束的字元串,可以在這個字元串中指定初始目錄。Pointer to a null terminated string that can specify the initial directory. 在不同的平台上,為選擇初始目錄有不同的運算法則。</dd>

Windows 2000:

如果lpstrFile包含了一個路徑,這個路徑就是初始目錄。

否則,lpstrInitialDir指定的為初始目錄。

如果lpstrInitialDir為NULL,并且目前目錄下包含有一些指定過濾器類型的檔案,初始目錄就是目前目錄。

否則,如果應用程式在過去使用過打開哐另存為對話框,使用最近選擇的路徑作為初始目錄。然而,如果一個應用程式長時間沒有運作過,它儲存的選擇的路徑将被丢棄。

否則,初始目錄是目前使用者的私人檔案目錄(即我的檔案)。

否則,初始目錄是桌面檔案夾。

Windows 98:

lpstrInitialDir指定初始目錄。

如果lpstrInitialDir是NULL并且lpstrFile包含了一個路徑,那麼這個路徑就是初始目錄。

否則,如果目前目錄包含了一些指定的過濾類型的檔案,那麼初始化目錄是目前目錄。

Windows和Windows NT/ 2000的早期版本:

否則,初始目錄是目前目錄。

<dt>lpstrTitle</dt>

<dd>指向在對話框的标題欄中放置的字元串。如果這個成員是NULL,系統使用預設标題(另存為或打開)</dd>

<dt>Flags</dt>

<dd>位标記的設定,你可以使用來初始化對話框。當對話框傳回時,它設定的這些标記指出使用者的輸入。這個成員可以是下列标記的組合。</dd>

标記

含意

OFN_ALLOWMULTISELECT

指定檔案名清單框允許多選。如果同時你設定了OFN_EXPLORER标記,對話框使用Explorer風格使用者界面;否則它使用舊風格使用者界面。

如果你為一個舊風格對話框指定了一個定制的模闆,檔案名清單框的定義必須包含LBS_EXTENDEDSEL值。

OFN_CREATEPROMPT

如 果使用者指定了一個不存在的檔案,這個标記使用對話框能提示使用者是否建立這個檔案。如果使用者選擇了建立這個檔案,對話框關閉并且函數傳回指定的名字;否則, 對話框繼續停留。如果你使用帶有OFN_ALLOWMULTISELECT标記的這個标記,對話框允許使用者去指定一個不存在的檔案。

OFN_DONTADDTORECENT

OFN_ENABLEHOOK

激活在lpfnHook成員中指定的鈎子函數。

OFN_ENABLEINCLUDENOTIFY

OFN_ENABLESIZING

Windows 2000,Windows 98:使Explorer風格的對話框可以使用滑鼠或鍵盤調整大小。預設時,Explorer風格的打開和另存為對話框允許被調整大小,不顧這個标記是否被設定。這标記僅在你提供了一個鈎子程式或定制模闆時是必需的。舊風格的對話框不允許調整大小。

OFN_ENABLETEMPLATE

指出lpTemplateName成員是指向對話框模闆資源的名字,這個模闆資源在能被hInstance成員識别的子產品中。

如果OFN_EXPLORER标記被設定,系統使用指定的模闆去建立一個對話框,是預設Explorer風格對話框的子視窗。如果OFN_EXPLORER标記沒有被設定,系統使用舊風格的對話框替代預設的對話框。

OFN_ENABLETEMPLATEHANDLE

指出hInstance成員能識别的包含預載對話框模闆的資料塊。如果這個标記被指定的,系統忽略lpTemplateName。

如果OFN_EXPLORER标記被設定,系統使用指定的模闆去建立一個對話框,是預設Explorer風格對話框的子視窗。如果OFN_EXPLORER标記沒有被設定,系統使用模闆去建立一個舊風格對話框替代預設對話框。

OFN_EXPLORER

預設下,打開和另存為對話框使用Explorer風格使用者界面,不顧這個标記是否設定。這個标記僅在你提供了一個鈎子程式或定制模闆或設定了OFN_ALLOWMULTISELECT标記時是必需的。

如果你想使用舊風格的界面,省略OFN_EXPLORER 标記,并且提供一個代替的舊風格模闆或鈎子程式。如果你想用舊風格但不需要一個定制模闆或鈎子程式,簡單的提供一個鈎子程式,讓它傳回FALSE。

OFN_EXTENSIONDIFFERENT

指定使用者輸入的一個檔案的擴充名與lpstrDefExt指定的擴充名不同。如果lpstrDefExt是NULL,函數不使用這個标記。

OFN_FILEMUSTEXIST

指定使用者僅可以在檔案名登入字段中輸入已存在的檔案的名字。如果這個标記被指定的并且使用者輸入了一個無效的名字,對話框程式顯示一個等待消息框。如果這個标記被指定,OFN_PATHMUSTEXIST标記也被使用。

OFN_FORCESHOWHIDDEN

Windows 2000:強制顯示系統和隐藏屬性的檔案,進而壓倒使用者設定的顯示或不顯示隐藏檔案。否則,帶有系統和隐藏标記的檔案不被顯示。

OFN_HIDEREADONLY

隐藏隻讀複選框。

OFN_LONGNAMES

對于舊風格對話框,這個标記引起對話框使用長檔案名。如果這個标記沒有被指定,或如果OFN_ALLOWMULTISELECT标記也被設定,舊風格對話框為帶有空格的檔案名使用短檔案名(8.3格式)。

Explorer風格對話框忽略這個标記,通常顯示長檔案名。

OFN_NOCHANGEDIR

如果當搜尋檔案時使用者改變了目錄的時候,恢複目前目錄到它的初始值。

OFN_NODEREFERENCELINKS

引導對話框為選擇的快捷方式(.LNK)檔案傳回路徑和檔案名。如果這個值沒有被指定,對話框傳回這個快捷方式所引用檔案的路徑和檔案名。

OFN_NOLONGNAMES

對于舊風格對話框,這個辨別引起對話框去使用短檔案名(8.3格式)。

OFN_NONETWORKBUTTON

隐藏和顯示風格按鈕。

OFN_NOREADONLYRETURN

指定傳回的檔案不帶有隻讀複選框,不是在寫保護的目錄中。

OFN_NOTESTFILECREATE

指 定檔案不是在對話框關閉前建立的。如果應用程式儲存檔案到一個建立的非映象風格共享上,這個标記應該被指定的。當一個應用程式指定了這标記,庫不能檢查寫 保護,磁盤滿,打開驅動器門或網絡保護。應用程式使用這個标記必須小心執行檔案操作,因為一旦檔案被關閉,它不能重新打開。

OFN_NOVALIDATE

指定公共對話框允許在傳回的檔案名中有無效的字元。典型的,正在調用的程式使用一個鈎子程式通過FILEOKSTRING消息檢查檔案名。如果在編輯控件中的文本框是空的或隻包含了空格,那麼檔案和目錄清單框是被更新的。如果編輯控件中的文本框包含了别的東西,那麼nFileOffset和nFileExtension的設定值是通過分析文本産生的。沒有預設的擴充名被添加到文本,也沒有文本被複制到lpstrFileTitle指定的緩沖。

如果通過nFileOffset指定的值比0小,檔案是無效的。否則,檔案名是有效的。如果OFN_NOVALIDATE沒有被指定,nFileExtension和nFileOffset可以被使用。

OFN_OVERWRITEPROMPT

如果選擇的檔案已經存在,使用另存為對話框産生一個消息框。使用者必須确認是否涵蓋這個檔案。

OFN_PATHMUSTEXIST&lt; /&gt;

繼續閱讀