سؤال

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

فكيف يمكنني إنشاء نافذة حيث تترك مساحة لأفراد الحالة الخاص بي ولا يمكن تقديم أي من أوفاتي المفتوحة في تلك المنطقة؟

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

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

المحلول

http://www.gamedev.net/community/forums/topic.asp؟topic_id=291682

تحرير: إنه ليس سؤالًا بسيطًا للإجابة عليه. إذا كنت لا تعرف ما هي نافذة الطفل تحت Win32 ، فقد تكون في وضع أفضل بكثير. ومع ذلك ، فإن مطالبة شخص ما بإعطائك شرحًا كاملاً لنظام Windows Windowing ليس بالأمر الفذ.

هذه لمحة عامة:

تحتاج أساسًا إلى إنشاء نافذة طفل يمكن القيام بها باستخدام CreateWindow لإنشاء نافذة بأسلوب WS_CHILD ومع معلمة HWNDPARENT الخاصة بها تم تعيينها على مقبض النافذة الذي تريد أن تكون النافذة الجديدة طفلة.

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

من هنا يمكنك التعامل مع أشياء مثل الإعداد. ستكون نافذتك الأولية إما أ wm_create أو أ wm_initdialog (اعتمادًا على نوع النافذة التي تنشئها). من هناك تحتاج إلى إنشاء نوافذ الطفل (لا تنس الاتصال فرجي شباك لجعلها مرئية !!). من هذه النقطة ، يمكنك بعد ذلك إعداد جهاز DirectX ليتم إرفاقه بمقبض نافذة الطفل (HWND).

علاوة على ذلك ، إذا كنت تريد أن تكون قادرًا على إعادة حجم النافذة ، فأنت بحاجة أيضًا إلى مراعاة wm_size mesage. ومع ذلك ، أوصي بشدة بمحاولة تشغيل الباقي قبل البدء في النظر في هذا لأنه يصبح معقدًا للغاية حيث ستحتاج إلى تدمير جهاز DirecTX الخاص بك وإعادة إنشاءه بحيث يكون الحجم الصحيح.

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

نصائح أخرى

قد تكون إحدى الطرق هي جعل "النافذة المقدمة" و "statusbar" كلا الأطفال من نافذة تحتوي WM_SIZE رسالة لتلك النافذة المحتوية لوضع الأطفال حتى لا تتداخل.

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