هو مزدوج التخزين المؤقت المطلوب مع تكوين سطح المكتب ممكن؟

StackOverflow https://stackoverflow.com/questions/1840516

سؤال

هل لا يزال التخزين المؤقت مزدوج عند تمكين تكوين سطح المكتب؟

في مايكروسوفت دليل توافق التطبيقات:

واجهة الجهاز الرسومية (GDI)

قبل نظام التشغيل Windows Vista و Windows Server 2008، تم رسم مقبض النافذة (HWND) مباشرة على الشاشة، والتي كانت تحتوي على بعض الفوائد، ولكنها محدودة كيف يمكن ل Windows عرض وإدارة النوافذ من المستوى الأعلى. في نظام التشغيل Windows Vista و Windows Server 2008، يتم تقديم جميع نوافذ المستوى الأعلى إلى صورة نقطية خارج الشاشة (على غرار WS_EX_LAYERED)، وتجمع إدارة Window Desktop بين الصور معا لرسم سطح المكتب.

يبدو أن كل التقديم قد انتهز الآن إلى صورة نقطية خارج الشاشة:

يتم تقديم Windows إلى صورة نقطية خارج الشاشة

هل هذا صحيح؟

السبب في أنني أسأل هو أنني ما زلت أرى الخفقان خلال دورة الطلاء القياسية:

  • WM_ERASEBKGND.
  • WM_PAINT.

في حين يتم تمكين تكوين سطح المكتب:

alt text

كنت سأفترض أنه بين المكالمات

   BeginPaint(hWnd, paintStructure);
   ...
   EndPaint(hWnd, paintStructure);

أن جميع اللوحة سيحدث لعازلة الظهر:

يتم تقديم Windows إلى صورة نقطية خارج الشاشة

وفي الوقت نفسه، سيبقى العازلة الأمامية غير متأثرة.

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

المحلول

هل هذا صحيح؟

نعم (وهو كيف يمكن أن تظهر لك الصور المصغرة أجزاء من النافذة المحظورة حاليا).

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

نصائح أخرى

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

هذا لا ليس يعني أن الرسم لهذه السطح خارج الشاشة يقلل من الخفقان الآلي. إذا قمت بمسح النافذة ثم إعادة رسمها وبين كلا الإجراءين DWM إعادة رسم الشاشة (التي تقوم بحوالي 60 مرة في الثانية)، فحول بالطبع سترى الخفقان.

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

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