ตัวกรอง

ข้อมูลในส่วนนี้นำไปใช้กับทั้งลักษณะ Explorer และเก่าสไตล์เปิดและบันทึกเป็นกล่องโต้ตอบ.

คุณสามารถให้ตัวกรองชื่อแฟ้มเพื่อช่วยผู้ใช้ในการจำกัดชื่อแฟ้มที่แสดงในกล่องโต้ตอบ ตัวกรอง filename ประกอบด้วยคู่สายอักขระที่มีการสิ้นสุดด้วย null คำอธิบาย และรูป แบบ หนึ่ง concatenated อีก กล่องโต้ตอบแสดงคำอธิบายเพื่อให้ผู้ใช้เลือกตัวกรองที่ใช้ และจะใช้รูปแบบการเลือกแฟ้มต่าง ๆ เมื่อต้องการแสดง.

เมื่อต้องการระบุตัวกรอง ตั้งค่าสมาชิกlpstrFilterของโครงสร้างOPENFILENAMEชี้ไปที่การบัฟเฟอร์ที่ประกอบด้วยอาร์เรย์ของคู่สายอักขระตัวกรอง สายอักขระสุดท้ายในอาร์เรย์ต้องตาม ด้วยตัวอักขระ null พิเศษ.

สายลวดลายได้การผสมระหว่างตัวอักษรของชื่อแฟ้มที่ถูกต้องและเครื่องหมายดอกจัน (*) เครื่องหมายดอกจันคือ สัญลักษณ์ที่แสดงถึงการรวมกันของตัวอักษรของชื่อแฟ้มที่ถูกต้อง กล่องโต้ตอบแสดงเฉพาะแฟ้มที่ตรงกับรูปแบบของการ เมื่อต้องการระบุรูปแบบหลายสำหรับคำอธิบายที่เดียวกัน คุณต้องใช้เครื่องหมายอัฒภาค () เพื่อแยกรูปแบบ หมายเหตุว่า อักขระช่องว่างในสายอักขระรูปแบบสามารถสร้างผลลัพธ์ที่ไม่คาดคิด.

ส่วนรหัสต่อไปนี้จะระบุตัวกรองสอง ตัวกรอง ด้วยคำอธิบายของ "ต้นฉบับ" มีลวดลายสอง ถ้าผู้ใช้เลือกตัวกรองนี้ กล่องโต้ตอบแสดงเฉพาะแฟ้มที่มีการC และส่วนขยาย CXX.

OPENFILENAME ofn       / / โครงสร้างกล่องโต้ตอบทั่วไป

ofn.lpstrFilter = "Source\0 *C; *CXX\0All\0*.*\0 "
ofn.nFilterIndex = 1 

สมาชิกnFilterIndexของโครงสร้างOPENFILENAMEระบุดัชนีที่บ่งชี้ตัวกรองที่ใช้กล่องโต้ตอบการเริ่มต้นด้วย ตัวแรกในบัฟเฟอร์มีดัชนี 1, 2 สอง และอื่น ๆ ถ้ามีการเปลี่ยนแปลงผู้ใช้มีการตั้งค่าตัวกรองขณะใช้กล่องโต้ตอบnFilterIndexสมาชิกลงในดัชนีของตัวกรองที่เลือกบนกลับ.

คุณสามารถสร้างตัวกรองแบบกำหนดเอง โดยการตั้งค่าสมาชิกlpstrCustomFilterที่เป็นอยู่ของบัฟเฟอร์ที่ประกอบด้วยตัวกรองเดียว และตั้งค่าสมาชิกnMaxCustFilterที่ขนาดของบัฟเฟอร์ ในอักขระหรือไบต์ กล่องโต้ตอบเสมอวางตัวกรองแบบกำหนดเองที่เริ่มต้นของรายการตัวกรอง และ ปรับการกลับมา เสมอปรุงส่วนลวดลายของตัวกรอง ด้วยรูปแบบได้จากตัวกรองที่เลือก โดยผู้ใช้.

สำหรับกล่องโต้ตอบลักษณะ Explorer ส่วนขยายเริ่มต้นอาจเปลี่ยนแปลงถ้าผู้ใช้เลือกตัวกรองที่แตกต่างกัน ถ้าผู้ใช้เลือกตัวกรองที่มีลวดลายแรกเป็นของฟอร์ม *xxx (นั่นคือ การขยายไม่มีอักขระตัวแทน), กล่องโต้ตอบการใช้xxxเป็นค่าเริ่มต้น ปัญหานี้เกิดขึ้นเฉพาะถ้าคุณได้ระบุนามสกุลเป็นค่าเริ่มต้นในสมาชิกlpstrDefExtของโครงสร้างOPENFILENAME ตัวอย่างเช่น ถ้าผู้ใช้เลือก "Source\0 *C; *CXX\0 "กรอง ค่าเริ่มต้นเปลี่ยนเป็น"C" อย่างไรก็ตาม ถ้าคุณได้กำหนดตัวกรองเป็น "Source\0 *C * \0 ", ส่วนขยายเริ่มต้นจะไม่เปลี่ยนแปลงเนื่องจากส่วนขยายมีอักขระตัวแทน.

Index