سؤال

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

إذا قمت بالنقر فوق تصغير أو تعظيم، فإن النافذة تتفاعل تماما كما تتوقع (أي تماما كما تفعل عند استخدام نافذة الطبقات). ومع ذلك، عندما أقوم باستعادة النافذة، يحدث شيء غريب للغاية.

مستطيل العميل الافتراضي لإطار الاختبار الخاص بي هو 324 × 102. عندما أستعيد من الحالة المصغرة، على سبيل المثال، مرت CX و CEVES إلى Onsize هو 994، 550. إذا قمت بذلك بعد ذلك، فإن هذا هو الحجم الذي تم الإبلاغ عنه للنافذة. غريب، على الرغم من أنه إذا قمت بإجراء GetWindowRect أحصل على الحجم الصحيح (على الرغم من أنه من الواضح بما في ذلك جميع مجالات غير العميل الخاصة بي).

هل لدى أي شخص أي فكرة عما يحدث هنا، والأهم من ذلك، كيف يمكنني إصلاحه بحيث تقارير GetClientRect المعلومات الصحيحة؟

شكرا مقدما!

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

المحلول

لقد توصلت إلى نوع من الاختراق لحل هذه المشكلة. في onsize و onmove أتجاهل (c) x و (c) y أن أتلقى وأعمل كل شيء من GetWindowRect. التطبيق يتفاعل الآن كما هو متوقع. لقد حددت الشفرة مع تعليق [اختراق]. هذا يبدو غريبا للغاية، أحب أن أسمع لماذا يحدث هذا.

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