سؤال

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

هنا هو بعض الكود (VCL / Delphi / Borland Builder 6.0) لقد كنت تستخدم لاختبار: giveacodicetagpre.

إذا اتصلت بالبناء () قبل الموروثة :: WNDPROC () (يمر الرسالة إلى عنصر التحكم لأولئك الذين لا يعرفون VCL)، فإن عنصر التحكم لا يرسم أي شيء على ذاكرتي DC أو النافذة الفعلية DC وبعد إذا قمت باستدعاء GetDC () بدلا من ذلك، فإن عنصر التحكم لا يزال لا يسحب على الذاكرة DC، ولكن بعد ذلك يرسم على النافذة DC مباشرة. أؤكد هذا من خلال التعليق على دعوة بلدي bitblt () .. إذا لم يتم تعليقها، فإن منطقة العميل هي كلها سوداء (مما يعني أن السيطرة لم يرسم على الذاكرة DC على الإطلاق)، إذا كنت أعلق هذا الخط، يعتمد عنصر التحكم بشكل صحيح (مما يعني أنه يتجاهل ذاكرة WPARAM DC وذهبت مباشرة إلى النافذة DC).

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

أيضا، فإن عنصر التحكم يستخدم Richedit 2.0، على الرغم من أنني أستخدم VCL .. تم تعديله لإنشاء نافذة كصف "Richedit20a". لقد أكدت أيضا أن طبقة VCL لا تعبث باللوحة على الإطلاق، لذلك يجب رؤية هذا السلوك نفسه مع رمز Win32 النقي.

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

المحلول

what I really want is confirmation from others (link to MS KB article or MSDN would be great, so I can show my boss :)

How about the obvious location: The documentation for the WM_PAINT message, which clearly states

wParam

This parameter is not used.

There is therefore no reason to expect that modifying the wParam will have any effect.

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