سؤال

أنا أبحث عن فئة جيدة جدًا لتغيير حجم الحوار والتي تعمل على تمديد وتقليص العناصر الفردية حسب الحاجة مع تغيير حجم الشاشة.لدى ستيفان كيل فكرة جيدة (DlgResizeHelper) والتي تقوم بشكل أساسي بتغيير حجم كل شيء بنسبة محددة، لكنني أبحث عن شيء أكثر ذكاءً.

على سبيل المثال:

  • لا ينبغي تغيير حجم الرموز

  • يجب ألا يتم تمديد مربعات النص ذات السطر الواحد عموديًا

  • من المحتمل أن تظل الأزرار بنفس الحجم

أنا أبحث بشكل أساسي عن شيء ما لإلقاء نظرة على جميع عناصر التحكم، ومعرفة أن حقل النص الثابت مرتبط بعنصر التحكم التالي/الأسفل له وربط الاثنين معًا، وتغيير حجم عناصر التحكم الكبيرة بطريقة "ذكية" بحيث تبدو جيد.

هل هناك مثل هذه الأطر هناك؟لقد كنت أعمل على واحدة ولكن ربما يكون الشيء الجاهز أفضل.

متابعة:أنا أبحث في الحلول المقترحة.يتطلب الكثير منها منك تثبيت كل عنصر تحكم في مربع الحوار.أنا أبحث عن شيء ذكي يمكنه معرفة ما يجب أن تكون عليه أدوات التثبيت، مع القدرة على التثبيت يدويًا إذا كانت التخمينات خاطئة.يبدو أنه من الممكن أن يكون ذلك ممكنًا - يتفق معظم البشر على ضرورة ربط حقل نص ثابت بجوار حقل التحرير معًا.أعتقد أنني أبحث تقريبًا عن القليل من الذكاء الاصطناعي هنا :)

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

المحلول

يمكنك استخدام wxWidgets.إنه يستبدل MFC تمامًا، وهو متعدد المنصات، ويمنحك آلية حوار قائمة على التخطيط.

نصائح أخرى

أنا أستعمل ResizableLib (يفعل أيضًا صفائح الخصائص والصفحات) خارج مشروع الكود، IIRC.يمكنك تعيين نقاط ربط تحدد كيفية تغيير حجم مربع الحوار وعناصر التحكم أو تحريكه أثناء تحرك مربع الحوار.

يمكنك إعداد ما يصل إلى نقطتي ارتساء لكل عنصر تحكم (يسار، يمين) حتى تتمكن من نقلهما أثناء تحرك مربع الحوار، أو تغيير حجمهما أثناء تحركه.من السهل جدًا فهمها، إذا كان من الصعب الحصول عليها بشكل صحيح تمامًا :)

لقد حاولت الكثير واستقرت في النهاية http://www.codeproject.com/KB/dialog/layoutmgr.aspx.إنه لا يقوم بالتخطيط "الذكي" الذي تقترحه بالرغم من ذلك.لم يسبق لي أن رأيت ذلك في أي مكتبة، أو على أي منصة - لا أرى كيف يمكن أن يعمل الأمر دون وجود الكثير من السحر الخفي الذي يجب تجاوزه نصف الوقت على أي حال.

مكتبة Ultimate Toolbox MFC (هنا على CodeProject) يتضمن أ مدير التخطيط.لم أستخدمه بنفسي، لكن يبدو أنه يفعل ما تريد.

يمكنك أن تنظر إلى واجهة المستخدم الرسومية المهنية نستخدم مكتبة الفصل الخاصة بهم لتغيير حجم عناصر التحكم في الحوار.أعتقد أن هذا جزء من نسختهم المجانية.

نحن نستخدم فئة CResize من CodeGuru لتغيير حجم كافة عناصر التحكم تلقائيًا.يمكنك تحديد الطريقة التي تريد بها تغيير حجم كل عنصر تحكم ويقوم بالمهمة نيابةً عنك.

نموذج تغيير الحجم هو تحديد مقدار تحرك كل جانب من جوانب عنصر التحكم عند تغيير حجم مربع الحوار.

SetResize(IDC_EDIT1, 0,   0,   0.5, 1);
SetResize(IDC_EDIT2, 0.5, 0,   1,   1);

مفيد جدًا عندما يكون لديك عدد كبير من عناصر التحكم في الحوار.

مصدر الرمز

وهذا حل مجاني أيضًا من CodeProject
http://www.codeproject.com/KB/dialog/dlgresizearticle.aspx
إنها مجرد مجموعة من وحدات الماكرو البسيطة التي يتم التحكم في وضعها مع تغيير حجم مربع الحوار.

تحرير - متابعة تعليقات OPs.لا أعرف أي دعم عام للحجم مثل QT/WX لـ MFC، ولا يبدو أنه موجود في أطر عمل جديدة مثل Winforms أيضًا.
إنه موجود في QT/WX لأنه ضروري لمنصات متعددة حيث قد تكون عناصر واجهة المستخدم ذات حجم مختلف، وهو ما يفسر افتقار MS إليها.ولكنه أيضًا حيوي للمنافذ متعددة اللغات، على سبيل المثال.حيث يبلغ طول كلمة الإلغاء الألمانية 30 حرفًا.

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