C/C ++/C#: كيفية إجبار إعادة إعادة النافذة على Windows على Windows 7؟

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

سؤال

يمتلك طلبي نافذة مستوى قياسية للتطبيق. أحتاج إلى إجبار إعادة طلاء النافذة الكروم (المعروف باسم المنطقة غير العميل للنافذة). لا يهمني ما إذا كانت منطقة العميل قد تم إعادة طلاؤها أيضًا أم لا ، ولكن يجب إجبار الكروم نفسه على إعادة الطلاء.

على وجه الخصوص ، أحتاج إلى هذا للعمل على Windows 7. سواء كان يعمل على إصدارات OS الأخرى لا يهم في حالتي الخاصة. يمكن أن يكون الحل C ، C ++ ، C# أو أي لغة أخرى.

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

المحلول

وفق MSDN, ، يبدو أن

RedrawWindow( hWnd, NULL, NULL, RDW_INVALIDATE | RDW_FRAME );

هو ما تبحث عنه.

يتسبب RDW_Frame في أي جزء من المنطقة غير المخصصة للنافذة التي تتقاطع مع منطقة التحديث لتلقي رسالة WM_NCPAINT. يجب أيضًا تحديد علامة RDW_Invalidate ؛ خلاف ذلك ، RDW_FRAME ليس له أي تأثير. عادةً ما لا يتم إرسال رسالة WM_NCPAINT أثناء تنفيذ RedRawWindow إلا إذا تم تحديد RDW_UPDATENOW أو RDW_ERASENOW.

نصائح أخرى

ربما يمكنك إرسال رسالة WM_NCPAINT إلى النافذة

http://msdn.microsoft.com/en-us/library/dd145212٪28vs.85٪29.aspx

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