سؤال

في WTL، لا يدعم cbitmapbutton الصورة مع طبقة شفافة، مثل PNG. لذلك قمت بتخصيص الرمز لاستخدام GDI + لرسم PNG، اسمه باسم CPNGButton. لكن الأمور غريبة على فوز XP. عندما يتداخل الزر من النافذة الأخرى، يتلقى الزر WM_PAINT أولا، ثم الأصل، مما تسبب في نتيجة غير صحيحة.

أدخل وصف الصورة هنا->  أدخل وصف الصورة هنا

أنا أتحقق من المورد وإزالة سمة WS_TABSTOP من قالب الزر، والأشياء تنقل، وتتلقى النافذة الأصلية WM_PAINT أولا، ثم الزر. ما السبب WS_TABSTOP للتأثير على ترتيب لوحة النافذة؟

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

المحلول

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

استخدم علامة نمط WS_EX_TRANSPARENT.يروي أن Windows الذي تريد أن يقوم الأصل بالزر في نافذة العميل لتوفير وحدات البكسلات الخلفية.

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