السلوك الغريب من تعديل لون خلفية عنصر التحكم عند استخدام ويندوز إكس بي الضوابط المشتركة

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

سؤال

أواجه مشكلة غريبة ( حسنا, على الأقل أجد أنه من الغريب =) ).أنا أكتب بلدي GUI, الذي هو التفاف حول windows api (ونعم, أنا على علم WTL والأطر مثل MFC =) ).في المرحلة الراهنة يجب incapsulated عناصر التحكم الشائعة في مثل هذه الطريقة:على سبيل المثال, تحرير الطبقة يتكون من نافذة بسيطة و معيار نافذة تحرير فوقه ( MainWindow -> GhostWindow -> EditBox ).هذا هو كيف يمكنك على سبيل المثال تغيير لون الخلفية من تحرير داخل تحرير الطبقة نفسها:

myedit->SetBkColor ( RGB ( 0, 0, 0 ) );

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

شكرا لك يا #535.

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

المحلول 2

حسنا، كل شيء أسهل بكثير، مما كنت اعتقد. كنت فقط تفريط جدا = (عند واحد لا تستخدم التصميم وقصب واحد استخدام :: SetBkColor (...) لتغيير لون الخلفية، والعودة فرشاة من WM_CTLCOLOR * لتغيير لون الحدود إزدادت الأمور أصبحت مختلفة بعد تمكين التصميم . :: الآن SetBkColor (...) تتوافق مع التركيز اللون ويعود فرشاة يتغير لون الخلفية. عار على لي = (

نصائح أخرى

  1. عند إرفاق نسخة 6 المجاهرة الدعوة إلى InitcommonControlsEx يصبح غير ضروري.

  2. على أي حال.مع الإصدار 6 عناصر التحكم الشائعة تحميل, XP السمات يستخدم حتى ويندوز القياسية الضوابط.ألوان الخلفية على الضوابط التي رسمها باستخدام xp-موضوع اللون لذا الخاصة* تستخدم رسائل أقل.

  3. أنت حاليا تجاوز coolor من مختلف عناصر التحكم باستخدام الخاصة* الرسائل ؟

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