بدءًا من Windows Me و Windows 2000 ، تضيف بنية OpenFilename لـ getOpenFilename () و getSaveFilename () ثلاثة عناصر جديدة. لنلقي نظرة أولاً:
اكتب اسم OpenFilename
lstructsize طالما
hwndowner طالما
Hinstance طالما
LPSTRFILTER كما سلسلة
LPSTRCUSTOMFILTER كسلسلة
NmaxCustFilter طالما
nfilterindex طالما
LPSTRFILE كما سلسلة
nmaxfile لفترة طويلة
LPSTRFILETITAL كسلسلة
nmaxfiletital طالما
lpstrinitialdir كسلسلة
LPSTRTITAL كسلسلة
أعلام طويلة
nfileoffset كما عدد صحيح
nfilextension كما عدد صحيح
LPSTRDEXT كسلسلة
lcustdata طالما
LPFNHOOK طالما
lptemplename كسلسلة
'#if (_win32_winnt> = 0x0500)
محفوظة PVRESED طالما
محفوظة منذ فترة طويلة
Flagsex طالما
'#endif // (_win32_winnt> = 0x0500)
نوع النهاية
ليس من الصعب أن نرى أن العناصر الجديدة المحفوظة والموافقة عليها يتم الاحتفاظ بها. . قم بإعداد علامة بت هذه لإيقاف تشغيل الشريط السريع على الجانب الأيسر من مربع الحوار Windows 2000 (أو Windows ME) "افتح الملف". يمكن أن يخزن شريط الاختصار هذا ما مجموعه خمسة اختصارات ، والتي يمكن أن تحدد اختصارك عن طريق تعديل السجل. أما بالنسبة لكيفية التعديل ، فهو ليس موضوعنا اليوم ، لذلك لن نناقشه في الوقت الحالي. ومع ذلك ، في الاستخدام الفعلي ، اكتشفت مشكلة: لا يمكن تشغيل الإجراءات التي تستخدم هذا الهيكل الجديد على Windows 98/95/NT4. قد يكون السبب هو أنه عند تعيين Lstructsize ، يتم حساب الأعضاء الثلاثة الجدد ، مما يؤدي إلى زيادة قدرها 12 بايت في طول الهيكل ، ولا يمكن تحديد النسخة القديمة من comdlg32.dll ، ويخطئ طول الهيكل. والنتيجة النهائية هي أنه لا يمكن عرض مربع الحوار "فتح الملف" و "حفظ الملف".
في ضوء هذه المشكلة ، استخدمنا الأفكار التالية لحلها: استخدم وظيفة GetVersionEx () للكشف عن إصدار Windows. () ، ثم تعيين قيمة إلى lstructsize. وبهذه الطريقة ، سوف يتجاهل إصدار COMDLG32.DLL العناصر الثلاثة الجديدة. بعد الممارسة ، يثبت أن هذه الطريقة ممكنة.
بالطبع ، نعتبر أيضًا أنه قد يكون هناك إصدار جديد من الإصدار الجديد من COMDLG32.DLL بسبب تثبيت برنامج معين بسبب تثبيت برنامج معين ، بحيث يمكن استخدام الميزات الجديدة. لذا فإن أفضل طريقة هي اكتشاف إصدار COMDLG32.DLL نفسه ، ثم تحديد ما إذا كان طول بنية OpenFilename يجب أن يتجاهل طول العناصر الثلاثة الجديدة.
أكبر مركز لتظاهر محطة بارد في الصين!