سؤال

هل هناك طريقة لإنشاء لا جدال مربع الحوار في C ++ MFC الذي يبقى دائما أعلى النوافذ الأخرى في التطبيق؟ أنا أفكر في نوع من حوار البحث في Visual Studio 2005 - حيث يبقى في الأعلى، ولكن لا يزال بإمكانك تحرير النص الأساسي.

(إذا كان الأمر يحدث فرقا، فهذا ليس MDI؛ إنه تطبيق يستند إلى حوار)

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

المحلول

من نيش:

جعل الحوار الخاص بك البقاء على القمة

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

SetWindowPos(&this->wndTopMost,0,0,0,0,SWP_NOMOVE|SWP_NOSIZE);

أساسا ما نقوم به هو استخدام وظيفة SetWindowPos لتغيير ترتيب Z من نافذة الحوار لدينا. نجعل حوارنا يبقى في أعلى جميع النوافذ الأخرى عن طريق تحريكها إلى أعلى ترتيب Z. الآن حتى عند تنشيط بعض النافذة الأخرى، ستبقى نافذة لدينا في القمة. لكنني أنصحك بالتأكد من أنك تعرف بالضبط ما تفعله عند القيام بذلك، لأنه قد يزعج الناس إذا لم يتمكنوا من إخراج نافذتك من الطريق عندما يريدون القيام بذلك.

كما ذكرت في التعليقات، فإن الخط أعلاه يجعل النافذة تجلس أعلى كل تطبيق. ستحتاج إلى القيام به

SetWindowPos(&this->wndTop,0,0,0,0,SWP_NOMOVE|SWP_NOSIZE);

لجعل نافذة الجلوس على رأس التطبيق الخاص بك فقط.

-Adam.

نصائح أخرى

الإجابة المقبولة فشل في ويندوز 7 أو أعلى. (أو ربما بالنسبة لي) ولكن جعل مربع حوار غير مشروط مثل النوافذ المنبثقة بدلا من الطفل يحلها. يحصل الآن على نافذة الحوار WRT الرئيسية، ولكن يمكنك كتابة التعليمات البرمجية لتقييد أي مكان. باستخدام حد الحدود أو شريط أعلى يجعلها نافذة بسيطة.

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