سؤال

في ويندوز فيستا، ولقد تم استخدام IFileSaveDialog للسماح للمستخدمين اختيار ل"حفظ باسم" المجلد. للمستخدمين تصدير مجلد من الصور، مثلا، وتحتاج إلى اختيار مجلد هدف جديد أو موجود.

وباختصار، رمز غني عن مثل هذا:

IFileSaveDialog* dialog; // created
dialog->SetOptions(FOS_PICKFOLDERS);
dialog->Show(NULL);
dialog->GetResult(&shellItem)

في ويندوز 7، يظهر خيار FOS_PICKFOLDERS قد غير مسموح بها (ويتم وضع علامة على هذا النحو في <لأ href = "http://msdn.microsoft.com/en-us/library/bb775708٪28VS.85٪29 .aspx اتصال "يختلط =" noreferrer "> وAPI ). قيمة العائد على دعوة SetOptions هي E_INVALIDARG. إذا كنت تستخدم IFileOpenDialog، أنا سمحت لتعيين خيار المجلدات، ولكن يتم مطالبة المستخدم مع وجود خطأ عند اختيار مجلد غير موجود (على الرغم من بلدي الأعلام إعداد يشير إلى عدم القيام بذلك).

هل هناك طريقة بديلة للحصول على IFileDialog الجديد ليكون بمثابة الحوار "حفظ مجلد"؟

[لدرء بعض التعليقات، وAPI SHBrowseForFolder لا يزال موجودا، ولكن لا يزال من غير حل مقبول لليقررون UI لدينا.]

هل كانت مفيدة؟

المحلول

ويمكن العثور عليها والسبب في ذلك في وثائق:

وFOS_PICKFOLDERS: تقديم الحوار فتح تقدم خيارات المجلدات وليس الملفات

وعن طريق FOS_PICKFOLDERS ل "حفظ" كان من المفترض أبدا أن تكون معتمدة ولكن لم فيستا لا فرضه. استخدام IFileOpenDialog بدلا من ذلك وكنت على ما يرام. كنت اختيار مجلد موجود (لا تحديد مجلد لإنشاء)، مفتوحة لذلك كان دائما الخيار الصحيح.

نصائح أخرى

وأنا لم ألعب مع حولها الحوارات ويندوز 7 بعد، ولكن تحميل ويندوز API رمز حزمة فقط هذا الصباح وأنا تنفيذ شريط الأدوات صورة مصغرة وأيقونة تراكب في تطبيق أنا أعمل على. انها على الارجح توجيهك في الاتجاه الصحيح.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top