OPENFILENAMEโครงสร้างประกอบด้วยข้อมูลที่ใช้ฟังก์ชันGetSaveFileNameและGetOpenFileNameในการเปิดหรือบันทึกทั่วไปกล่องโต้ตอบเป็นการเตรียมใช้งาน หลังจากผู้ใช้ปิดกล่องโต้ตอบ ระบบการส่งกลับข้อมูลเกี่ยวกับการเลือกของผู้ใช้ในโครงสร้างนี้ .
typedef struct tagOFN { / / ofn DWORD lStructSize
HWND hwndOwner
HINSTANCE hInstance
LPCTSTR lpstrFilter
LPTSTR lpstrCustomFilter
DWORD nMaxCustFilter
DWORD nFilterIndex
LPTSTR lpstrFile
DWORD nMaxFile
LPTSTR lpstrFileTitle
DWORD nMaxFileTitle
LPCTSTR lpstrInitialDir
LPCTSTR lpstrTitle
DWORD Flags
WORD nFileOffset
WORD nFileExtension
LPCTSTR lpstrDefExt
DWORD lCustData
LPOFNHOOKPROC lpfnHook
LPCTSTR lpTemplateName
} OPENFILENAME
หากถูกตั้งค่าสถานะ OFN_EXPLORER ระบบใช้แม่แบบที่ระบุเพื่อสร้างกล่องโต้ตอบที่เป็นลูกของ Explorer-ลักษณะเริ่มต้นกล่องโต้ตอบ หากถูกตั้งค่าสถานะ OFN_EXPLORER ระบบใช้แม่แบบเพื่อสร้างกล่องโต้ตอบลักษณะเดิมที่แทนกล่องโต้ตอบเริ่มต้น.
สายอักขระแรกในแต่ละคู่เป็นสายอักขระแสดงที่อธิบายตัวกรอง (ตัวอย่างเช่น, "แฟ้ม"), และสายอักขระสองระบุรูปแบบของการกรอง (ตัวอย่างเช่น, " *TXT") เมื่อต้องการระบุลวดลายตัวกรองหลายสำหรับสตริงที่แสดงเดี่ยว ใช้เครื่องหมายอัฒภาคแยกรูปแบบ (เช่น, " *TXT; *เอกสาร; *บาก") รูปแบบสายอักขระสามารถเป็นการรวมกันของชื่อแฟ้มถูกต้องอักขระและอักขระตัวแทนเครื่องหมายดอกจัน (*) ไม่มีช่องว่างในรูปแบบสายอักขระ.
ระบบไม่เปลี่ยนลำดับของตัวกรอง มันแสดงในกล่องคำสั่งผสมประเภทแฟ้มตามลำดับระบุไว้ในlpstrFilter .
ถ้าlpstrFilterเป็น NULL กล่องโต้ตอบแสดงตัวกรองใด ๆ.
ถ้าสมาชิกนี้เป็น NULL กล่องโต้ตอบการรักษารูปแบบผู้ใช้กำหนดตัวกรอง.
ถ้าสมาชิกนี้ไม่ใช่ค่า NULL ค่าของสมาชิกnMaxCustFilterต้องระบุขนาด ไบต์ (รุ่น ANSI) หรืออักขระ 16 บิต (รุ่น Unicode), ของบัฟเฟอร์lpstrCustomFilter.
ถ้าnFilterIndexเป็นศูนย์ และlpstrCustomFilterเป็น NULL ระบบใช้ตัวแรกในบัฟเฟอร์lpstrFilter กรณีที่สมาชิกทุกคนที่สามเป็นศูนย์หรือ NULL ระบบใช้ตัวกรองใด ๆ และไม่ต้องแสดงแฟ้มใด ๆ ในตัวควบคุมรายการแฟ้มของกล่องโต้ตอบ.
ถ้ามีการตั้งค่าการตั้งค่าสถานะ OFN_ALLOWMULTISELECT และผู้ใช้เลือกแฟ้มหลาย ๆ แฟ้ม บัฟเฟอร์ประกอบด้วยไดเรกทอรีปัจจุบันตาม ด้วยชื่อแฟ้มของแฟ้มที่เลือก สำหรับกล่องโต้ตอบลักษณะ Explorer สายอักขระไดเรกทอรีและชื่อแฟ้มเป็น NULL คั่นด้วย โดยมีอักขระ NULL พิเศษหลังชื่อแฟ้มล่าสุด สำหรับกล่องโต้ตอบลักษณะเดิม สายอักขระมีช่องว่างคั่น และฟังก์ชันใช้ชื่อแฟ้มแบบสั้นสำหรับชื่อแฟ้มด้วยช่องว่าง คุณสามารถใช้การ FindFirstFileฟังก์ชันการแปลงระหว่างชื่อแฟ้มที่ยาว และสั้น.
ถ้า บัฟเฟอร์มีขนาดเล็กเกินไป ฟังก์ชันจะส่งกลับค่า FALSE และการส่งกลับของฟังก์ชันCommDlgExtendedError FNERR_BUFFERTOOSMALL ในกรณีนี้ สองไบต์แรกของบัฟเฟอร์lpstrFileมีขนาดต้อง ไบต์หรืออักขระ.
Windows NT 5.0 และรุ่นใหม่ กว่า Windows 98 และรุ่นที่ใหม่กว่า:
ถ้าlpstrInitalDirเป็น NULL และไดเรกทอรีปัจจุบันประกอบด้วยแฟ้มใด ๆ ที่อยู่ในชนิดของตัวกรองที่ระบุ ไดเรกทอรีเริ่มต้นเป็นไดเรกทอรีปัจจุบัน.
ถ้าlpstrInitalDirเป็น NULL และไดเรกทอรีปัจจุบันไม่ประกอบด้วยแฟ้มใด ๆ ที่อยู่ในชนิดของตัวกรองที่ระบุ ไดเรกทอรีเริ่มต้นคือ ไดเรกทอรีของแฟ้มส่วนบุคคลของผู้ใช้ปัจจุบัน เมื่อต้องการระบุการไดเรกทอรีของแฟ้มส่วนบุคคลของผู้ใช้ปัจจุบันเป็นไดเรกทอรีเริ่มต้น ตั้งค่าlpstrInitialDirเป็นเส้นทางส่งกลับ โดยการเรียกการ SHGetSpecialFolderLocationฟังก์ชันกับค่าสถานะ CSIDL_PERSONAL.
เวอร์ชันก่อนหน้าของ Windows และ Windows NT:
ถ้าlpstrInitalDirเป็น NULL ไดเรกทอรีเริ่มต้นเป็นไดเรกทอรีปัจจุบัน.
| ค่าสถานะ | ความหมาย |
|---|---|
| OFN_ALLOWMULTISELECT | |
| ระบุว่าแฟ้ม ชื่อรายการกล่องอนุญาตให้เลือกได้หลายรายการ ถ้าคุณยังตั้งค่าสถานะ OFN_EXPLORER กล่องโต้ตอบการใช้ส่วนติดต่อผู้ใช้แบบ Explorer มิฉะนั้น จะใช้ส่วนติดต่อผู้ใช้แบบ. ถ้าผู้ใช้เลือกแฟ้มมากกว่าหนึ่งแฟ้มlpstrFileบัฟเฟอร์ส่งกลับเส้นทางไดเรกทอรีปัจจุบันตาม ด้วยชื่อแฟ้มของแฟ้มที่เลือก สมาชิกnFileOffsetคือออฟเซต ในไบต์หรืออักขระ ชื่อแฟ้มแรก และสมาชิกnFileExtensionไม่ได้ใช้ สำหรับกล่องโต้ตอบลักษณะ Explorer สายอักขระไดเรกทอรีและชื่อแฟ้มเป็น NULL คั่นด้วย โดยมีอักขระ NULL พิเศษหลังชื่อแฟ้มล่าสุด รูปแบบนี้ทำให้กล่องโต้ตอบแสดงลักษณะ Explorer เพื่อส่งกลับชื่อแฟ้มที่มีช่องว่าง สำหรับกล่องโต้ตอบลักษณะเดิม สายอักขระไดเรกทอรีและชื่อแฟ้มถูกคั่น ด้วยช่องว่าง และฟังก์ชันใช้ชื่อแฟ้มแบบสั้นสำหรับชื่อแฟ้มด้วยช่องว่าง คุณสามารถใช้การ FindFirstFileฟังก์ชันการแปลงระหว่างชื่อแฟ้มที่ยาว และสั้น. ถ้าคุณระบุแม่แบบแบบกำหนดเองสำหรับกล่องโต้ตอบลักษณะเดิมมี คำจำกัดความของกล่องรายการชื่อแฟ้มต้องประกอบด้วยค่า LBS_EXTENDEDSEL. |
|
| OFN_CREATEPROMPT | |
| หากผู้ใช้ระบุแฟ้มที่มีอยู่ ธงนี้ทำให้กล่องโต้ตอบจะพร้อมท์ผู้ใช้ให้สิทธิ์ในการสร้างแฟ้ม ถ้าผู้ใช้เลือกที่จะสร้างแฟ้ม กล่องโต้ตอบปิด และฟังก์ชันจะส่งกลับชื่อที่ระบุ มิฉะนั้น กล่องโต้ตอบจะยังคงเปิดอยู่ ถ้าคุณใช้การตั้งค่าสถานะนี้กับค่าสถานะ OFN_ALLOWMULTISELECT กล่องโต้ตอบการอนุญาตให้ผู้ใช้ระบุแฟ้มเดียวเท่านั้นที่ไม่มีอยู่. | |
| OFN_ENABLEHOOK | |
| เปิดใช้งานฟังก์ชันของ hook ระบุในสมาชิกlpfnHook. | |
| OFN_ENABLESIZING | |
| Windows NT 5.0, Windows 98:ทำให้กล่องโต้ตอบลักษณะ Explorer เพื่อปรับขนาดได้โดยใช้เมาส์หรือแป้นพิมพ์ โดยค่าเริ่มต้น กล่องโต้ตอบลักษณะ Explorerเปิดและบันทึก เป็นทำให้กล่องโต้ตอบการปรับขนาดได้คำนึงว่าตั้งค่าสถานะนี้ ธงนี้เป็นสิ่งจำเป็นเฉพาะเมื่อคุณมีขั้นตอนของ hook หรือแม่แบบที่กำหนดเอง กล่องโต้ตอบแบบไม่อนุญาตการปรับขนาด. | |
| OFN_ENABLETEMPLATE | |
| บ่งชี้ว่า สมาชิกlpTemplateNameที่ชี้ไปชื่อของทรัพยากรในโมดูลที่ระบุ โดยสมาชิกhInstanceแม่แบบโต้ตอบ. หากถูกตั้งค่าสถานะ OFN_EXPLORER ระบบใช้แม่แบบที่ระบุเพื่อสร้างกล่องโต้ตอบที่เป็นลูกของ Explorer-ลักษณะเริ่มต้นกล่องโต้ตอบ หากถูกตั้งค่าสถานะ OFN_EXPLORER ระบบใช้แม่แบบเพื่อสร้างกล่องโต้ตอบลักษณะเดิมที่แทนกล่องโต้ตอบเริ่มต้น. |
|
| OFN_ENABLETEMPLATEHANDLE | |
| บ่งชี้ว่า สมาชิกhInstanceที่ระบุข้อมูลบล็อกที่ประกอบด้วยแม่แบบกล่องโต้ตอบที่มากมายใส่ไว้ ระบบละเว้นการlpTemplateNameถ้ามีระบุค่าสถานะนี้. หากถูกตั้งค่าสถานะ OFN_EXPLORER ระบบใช้แม่แบบที่ระบุเพื่อสร้างกล่องโต้ตอบที่เป็นลูกของ Explorer-ลักษณะเริ่มต้นกล่องโต้ตอบ หากถูกตั้งค่าสถานะ OFN_EXPLORER ระบบใช้แม่แบบเพื่อสร้างกล่องโต้ตอบลักษณะเดิมที่แทนกล่องโต้ตอบเริ่มต้น. |
|
| OFN_EXPLORER | |
| บ่งชี้ว่า การกำหนดเองใด ๆ ที่ทำกับกล่องโต้ตอบเปิดหรือบันทึก เป็นใช้วิธีปรับแต่ง Explorer แบบใหม่ ดูข้อมูลเพิ่มเติมขั้นตอนของ Hook Explorer แบบและแม่แบบของ Explorer แบบกำหนดเอง. โดยค่าเริ่มต้น กล่องโต้ตอบเปิดและบันทึก เป็นใช้อินเทอร์เฟซสำหรับผู้ใช้ Explorer แบบคำนึงถึงว่าถูกตั้งค่าสถานะนี้ ธงนี้เป็นสิ่งจำเป็นเฉพาะเมื่อคุณมีขั้นตอนของ hook หรือแม่แบบที่กำหนดเอง หรือตั้งค่าสถานะ OFN_ALLOWMULTISELECT. ถ้าคุณต้องการให้ส่วนติดต่อผู้ใช้แบบ ละเว้นค่าสถานะ OFN_EXPLORER และเป็นแม่แบบในแบบแทน หรือเกี่ยวกระบวนงาน ถ้าคุณต้องการลักษณะเก่า แต่ไม่ต้องการแม่แบบกำหนดเอง หรือตะขอกระบวนงาน เพียงแค่ให้เป็นขั้นตอนของ hook ที่ส่งกลับ FALSE เสมอ. |
|
| OFN_EXTENSIONDIFFERENT | |
| ระบุว่า ผู้ใช้พิมพ์มีส่วนขยายชื่อแฟ้มที่แตกต่างจากการขยายที่ระบุโดยlpstrDefExt ฟังก์ชันไม่ได้ใช้ธงชาตินี้ถ้าlpstrDefExtเป็น NULL. | |
| OFN_FILEMUSTEXIST | |
| ระบุว่า ผู้ใช้สามารถพิมพ์ชื่อเฉพาะของแฟ้มที่มีอยู่ในแฟ้ม ชื่อรายการเขตข้อมูล ถ้ามีระบุค่าสถานะนี้ และผู้ใช้ป้อนชื่อไม่ถูกต้อง ขั้นตอนในกล่องโต้ตอบแสดงคำเตือนในกล่องข้อความ ถ้ามีระบุค่าสถานะนี้ ยังใช้ค่าสถานะ OFN_PATHMUSTEXIST. | |
| OFN_HIDEREADONLY | |
| อ่านเฉพาะกล่องกาเครื่องหมายซ่อน . | |
| OFN_LONGNAMES | |
| สำหรับกล่องโต้ตอบลักษณะเดิม ธงนี้ทำให้กล่องโต้ตอบการใช้ชื่อแฟ้มที่ยาวนาน ถ้าไม่มีระบุค่าสถานะนี้ หรือ หากยังมีตั้งค่าสถานะ OFN_ALLOWMULTISELECT กล่องโต้ตอบลักษณะเดิมใช้ชื่อแฟ้มแบบสั้น (รูปที่ 8.3) สำหรับชื่อแฟ้มด้วยช่องว่าง. กล่องโต้ตอบลักษณะ explorer ละเว้นการตั้งค่าสถานะนี้ และแสดงชื่อแฟ้มที่ยาวตลอดเวลา. |
|
| OFN_NOCHANGEDIR | |
| คืนค่าไดเรกทอรีปัจจุบันไปเป็นค่าเดิมถ้าผู้ใช้เปลี่ยนไดเรกทอรีในขณะที่กำลังค้นหาแฟ้ม. | |
| OFN_NODEREFERENCELINKS | |
| นำกล่องโต้ตอบเพื่อกลับเส้นทางและชื่อแฟ้มของทางลัดที่เลือก (แฟ้ม LNK) ถ้าค่านี้ไม่ได้ถูกกำหนด ส่งกล่องโต้ตอบกลับเส้นทางและชื่อแฟ้มของแฟ้มถูกอ้างอิงโดยทางลัด | |
| OFN_NOLONGNAMES | |
| สำหรับกล่องโต้ตอบลักษณะเดิม ธงนี้ทำให้กล่องโต้ตอบการใช้ชื่อแฟ้มแบบสั้น (รูปที่ 8.3). กล่องโต้ตอบลักษณะ explorer ละเว้นการตั้งค่าสถานะนี้ และแสดงชื่อแฟ้มที่ยาวตลอดเวลา. |
|
| OFN_NONETWORKBUTTON | |
| ซ่อน และปิดใช้งานปุ่ม'เครือข่าย'. | |
| OFN_NOREADONLYRETURN | |
| ระบุว่า แฟ้มส่งกลับไม่ได้อ่าน เฉพาะกล่องกาเครื่องหมายตรวจสอบ และไม่ได้อยู่ในไดเรกทอรีที่ป้องกันการเขียน. | |
| OFN_NOTESTFILECREATE | |
| ระบุว่า แฟ้มนั้นไม่สามารถสร้างก่อนปิดกล่องโต้ตอบ ธงนี้ควรจะระบุถ้า โปรแกรมประยุกต์ที่จะบันทึกแฟ้มที่อยู่บนเครือข่ายร่วมกันของการสร้าง-nonmodify เมื่อโปรแกรมประยุกต์ระบุค่าสถานะนี้ ในไลบรารีไม่ได้ตรวจสอบสำหรับการป้องกันการเขียน ดิสก์เต็ม ประตูเปิดไดรฟ์ หรือป้องกันเครือข่าย โปรแกรมประยุกต์ที่ใช้ธงชาตินี้ต้องทำการดำเนินการของแฟ้มอย่างรอบคอบ เนื่องจากไม่สามารถเปิดแฟ้มใหม่เมื่อปิด. | |
| OFN_NOVALIDATE | |
| ระบุว่า กล่องโต้ตอบทั่วไปทำให้อักขระที่ไม่ถูกต้องในชื่อแฟ้มถูกส่งกลับ โดยทั่วไป โปรแกรมประยุกต์ที่เรียกใช้ในขั้นตอนของ hook ตรวจสอบชื่อแฟ้ม โดยใช้ข้อความ FILEOKSTRING ถ้ากล่องข้อความในตัวควบคุมการแก้ไขว่างเปล่า หรือประกอบด้วยแต่ช่องว่าง รายการของไฟล์และไดเรกทอรีถูกปรับปรุง ถ้ากล่องข้อความในตัวควบคุมการแก้ไขประกอบด้วยอะไรnFileOffsetและnFileExtensionถูกตั้งค่าให้เป็นค่าที่สร้างขึ้น โดยการแยกวิเคราะห์ข้อความ และไม่มีส่วนขยายเริ่มต้นจะถูกเพิ่มลงในข้อความ ไม่ถูกคัดลอกข้อความมาการบัฟเฟอร์ที่ระบุโดยlpstrFileTitle. | |
| ถ้าค่าที่ระบุโดยnFileOffsetจะน้อย กว่าศูนย์ ชื่อแฟ้มไม่ถูกต้อง มิฉะนั้น ชื่อแฟ้มถูกต้อง และnFileExtensionและnFileOffsetสามารถใช้ว่าไม่ได้ระบุค่าสถานะ OFN_NOVALIDATE มี. | |
| OFN_OVERWRITEPROMPT | |
| ทำให้เกิดเป็นกล่องโต้ตอบบันทึกเพื่อสร้างกล่องข้อความถ้าแฟ้มที่เลือกมีอยู่แล้ว ผู้ใช้ต้องยืนยันว่า จะเขียนทับแฟ้ม . | |
| OFN_PATHMUSTEXIST | |
| ระบุว่า ผู้ใช้สามารถพิมพ์เฉพาะชื่อแฟ้มและเส้นทางที่ถูกต้อง ถ้ามีใช้ธงนี้ และผู้ใช้ชนิดที่มีเส้นทางที่ไม่ถูกต้องและชื่อแฟ้มในรายการเขตข้อมูลชื่อแฟ้มฟังก์ชันในกล่องโต้ตอบแสดงคำเตือนในกล่องข้อความ . | |
| OFN_READONLY | |
| ทำให้อ่าน เฉพาะกล่องกาเครื่องหมายที่จะตรวจสอบเริ่มต้นเมื่อสร้างกล่องโต้ตอบกัน ธงนี้บ่งชี้สถานะของอ่าน เฉพาะกล่องกาเครื่องหมายเมื่อปิดกล่องโต้ตอบ. | |
| OFN_SHAREAWARE | |
| ระบุว่า ถ้าเรียกไปยัง OpenFileฟังก์ชันล้มเหลวเนื่องจากการละเมิดการใช้ร่วมเครือข่าย ข้อผิดพลาดถูกละเว้น และกล่องโต้ตอบการส่งกลับชื่อแฟ้มที่เลือก. ถ้าไม่มีการตั้งค่าสถานะนี้ กล่องโต้ตอบการแจ้งให้ทราบของขั้นตอนของ hook เมื่อเครือข่ายที่ใช้ร่วมกันการละเมิดเกิดขึ้นสำหรับชื่อแฟ้มที่ระบุ โดยผู้ใช้ ถ้าคุณตั้งค่าสถานะ OFN_EXPLORER กล่องโต้ตอบส่งข้อความCDN_SHAREVIOLATIONกับขั้นตอนของ hook ถ้าคุณไม่ได้ตั้งค่า OFN_EXPLORER กล่องโต้ตอบส่งข้อความSHAREVISTRINGลงทะเบียนไปขั้นตอนของ hook. |
|
| OFN_SHOWHELP | |
| ทำให้กล่องโต้ตอบจะแสดงปุ่มที่ช่วยกัน สมาชิกhwndOwnerต้องระบุหน้าต่างไปHELPMSGSTRINGได้รับข้อความที่กล่องโต้ตอบการส่งเมื่อผู้ใช้คลิกที่ปุ่มวิธีใช้ที่ลงทะเบียน. กล่องโต้ตอบการ Explorer-ลักษณะส่งข้อความแจ้งเตือนCDN_HELPไปของขั้นตอนของ hook เมื่อผู้ใช้คลิกที่ปุ่ม'วิธีใช้'. |
|
ถ้าผู้ใช้เลือกแฟ้มมากกว่าหนึ่งแฟ้มnFileOffsetคือออฟเซตไปชื่อแฟ้มแรก.
ถ้าไม่ตั้งค่าสถานะ OFN_EXPLORER ถูกตั้งค่าในสถานะสมาชิกlpfnHookเป็นตัวชี้ไปยังขั้นตอนของ hook OFNHookProcOldStyleที่ได้รับข้อความสำหรับกล่องโต้ตอบ ขั้นตอนของ hook ส่งกลับค่า FALSE เพื่อส่งต่อข้อความ ลงในกระบวนงานเริ่มต้นกล่องโต้ตอบ หรือ TRUE ไปทิ้งข้อความ.
ถ้าตั้งค่า OFN_EXPLORER, lpfnHookเป็นตัวชี้ไปยังขั้นตอนของ hook OFNHookProc ขั้นตอนของ hook ได้รับข้อความแจ้งเตือนที่ส่งจากกล่องโต้ตอบ นอกจากนี้ขั้นตอนของ hook ยังได้รับข้อความสำหรับตัวควบคุมเพิ่มเติมใด ๆ ที่คุณได้กำหนดไว้ โดยการระบุต้นแบบการโต้ตอบเด็ก ขั้นตอนของ hook ไม่ได้รับข้อความสำหรับตัวควบคุมมาตรฐานของกล่องโต้ตอบเริ่มต้น.
หากถูกตั้งค่าสถานะ OFN_EXPLORER ระบบใช้แม่แบบที่ระบุเพื่อสร้างกล่องโต้ตอบที่เป็นลูกของ Explorer-ลักษณะเริ่มต้นกล่องโต้ตอบ หากถูกตั้งค่าสถานะ OFN_EXPLORER ระบบใช้แม่แบบเพื่อสร้างกล่องโต้ตอบลักษณะเดิมที่แทนกล่องโต้ตอบเริ่มต้น.
nbsp Windows &NT:ต้องการเวอร์ชัน 3.1 หรือรุ่นที่ใหม่กว่า
Windows:ต้องใช้ Windows 95 หรือรุ่นที่ใหม่กว่า
Windows CE:ต้องการเวอร์ชัน 1.0 หรือรุ่นใหม่กว่า
หัวข้อ:ประกาศใน commdlg.h
Unicode:กำหนดเป็นโครงสร้างแบบ Unicode และ ANSI.
ภาพรวมไลบรารีของกล่องโต้ตอบทั่วไปโครงสร้างกล่องโต้ตอบทั่วไป GetOpenFileName, GetSaveFileName, SHGetSpecialFolderLocation