เริ่มต้นจาก Windows Me และ Windows 2000 โครงสร้าง openfilename ของ getOpenfileName () และ getSaveFilename () เพิ่มองค์ประกอบใหม่สามองค์ประกอบ ลองมาดูกันก่อน:
พิมพ์ openfilename
lstructsize นาน
hwndowner นาน
Hinstance ตราบเท่าที่
lpstrFilter เป็นสตริง
lpstrcustomfilter เป็นสตริง
nmaxcustfilter นาน
nfilterindex นาน
LPSTRFILE เป็นสตริง
nmaxfile นาน
lpstrfiletital เป็นสตริง
nmaxfiletital ตราบเท่าที่
lpstrinitialdir เป็นสตริง
lpstrtital เป็นสตริง
ธงได้นาน
nfileOffset เป็นจำนวนเต็ม
nfileextension เป็นจำนวนเต็ม
lpstrdext เป็นสตริง
lcustdata นาน
lpfnhook นาน
lptemplename เป็นสตริง
'#if (_win32_winnt> = 0x0500)
pvreserved นาน
dwreserved นาน
Flagsex นาน
'#endif // (_win32_winnt> = 0x0500)
ประเภทสิ้นสุด
ไม่ยากที่จะเห็นว่าองค์ประกอบใหม่ที่ pvreserved และ dwreserved ยังคงอยู่ . ตั้งค่าป้ายบิตนี้เพื่อปิดแถบด่วนที่ด้านซ้ายของ Windows 2000 (หรือ Windows Me) "เปิดกล่องโต้ตอบ" แถบทางลัดนี้สามารถจัดเก็บทางลัดทั้งหมดห้าทางซึ่งสามารถระบุทางลัดของคุณเองได้โดยการปรับเปลี่ยนรีจิสทรี สำหรับวิธีการแก้ไขมันไม่ใช่หัวข้อของเราในวันนี้ดังนั้นเราจะไม่พูดคุยกันในขณะนี้ อย่างไรก็ตามในการใช้งานจริงฉันค้นพบปัญหา: ขั้นตอนการใช้โครงสร้างใหม่นี้ไม่สามารถทำงานบน Windows 98/95/NT4 ได้ เหตุผลอาจเป็นไปได้ว่าเมื่อตั้งค่า lstructsize สมาชิกสามคนใหม่จะถูกคำนวณส่งผลให้เพิ่มขึ้น 12 ไบต์ในความยาวโครงสร้างและรุ่นเก่าของ COMDLG32.DLL ไม่สามารถระบุได้และความยาวของโครงสร้างจะเข้าใจผิด ผลลัพธ์สุดท้ายคือไม่สามารถแสดงกล่องโต้ตอบ "เปิดไฟล์" และ "บันทึกไฟล์" ได้
ในมุมมองของปัญหานี้เราได้ใช้แนวคิดต่อไปนี้เพื่อแก้ไข: ใช้ฟังก์ชั่น GetVersionEx () เพื่อตรวจจับเวอร์ชัน Windows () จากนั้นกำหนดค่าให้กับ lstructsize ด้วยวิธีนี้เวอร์ชันของ comdlg32.dll จะเพิกเฉยต่อองค์ประกอบใหม่ทั้งสาม หลังการฝึกมันพิสูจน์ได้ว่าวิธีนี้เป็นไปได้
แน่นอนว่าเรายังพิจารณาด้วยว่าอาจมีเวอร์ชันใหม่ของ COMDLG32.DLL เวอร์ชันใหม่เนื่องจากการติดตั้งซอฟต์แวร์บางอย่างเนื่องจากการติดตั้งซอฟต์แวร์บางอย่างเพื่อให้สามารถใช้คุณสมบัติใหม่ได้ ดังนั้นวิธีที่ดีที่สุดคือการตรวจจับเวอร์ชันของ comdlg32.dll เองจากนั้นพิจารณาว่าความยาวของโครงสร้าง openfilename จะต้องเพิกเฉยต่อความยาวของสามองค์ประกอบใหม่หรือไม่
ศูนย์สาธิตสถานีเย็นที่ใหญ่ที่สุดในประเทศจีน!