سؤال

وأنا أكتب تطبيق Direct3D و بعد أن لاحظوا أخطاء غريبة مثل تنعيم تحدث حتى عندما تم إيقاف تشغيله ومؤشر الماوس لا يصطفون لأشياء بنفس الإحداثيات كما نفسها اكتشفت أنه عندما خلق نافذة وتشمل العرض والارتفاع المعلمات الحدود. البرنامج تم تقديم انتاج 800X600 الرسومات إلى نافذة من نفس الحجم، ولكن بسبب الحدود ومسحوق ذلك إلى 792x566 مستطيل. لقد زاد حجم نافذة للتعويض، ولكن هذا لا يعمل إذا كان النظام يستخدم نمط الحدود الآخر نمط قياسي XP. (النمط الكلاسيكي، على سبيل المثال)

هل هناك طريقة لمعرفة ما عرض الحدود ومرتفعات سوف تكون قبل I إنشاء النافذة؟

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

المحلول

وهذا يبدو وكأنه كنت تبحث عن وظيفة GetSystemMetrics. على سبيل المثال، يتم إرجاع عرض الحدود بالبكسل التي كتبها

GetSystemMetrics(SM_CXBORDER)

على الاضافى: بالنسبة الحجم الإجمالي سوف تحتاج إلى إضافة معا "قطع" مختلفة من المنطقة غير العميل: الحدود، في إطار الأحجام، شريط العنوان

نصائح أخرى

وثمة خيار آخر سيكون للتأكد من أن السطح D3D هو نفس حجم حجم المستطيل العميل (<لأ href = "http://msdn.microsoft.com/en-us/library/ms633503(VS.85) .aspx اتصال "يختلط =" نوفولو noreferrer "> GetClientRect () ). ثم كنت أعلم أنك سوف تجعل إلى الحجم المناسب وليس لديها ما يدعو للقلق على الإطلاق حول عرض القوائم والحدود وغيرها.

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