مشاركة معالجات GDI بين العمليات في Windows CE 6.0

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

  •  02-07-2019
  •  | 
  •  

سؤال

أعلم أن مقابض GDI فريدة وعملية خاصة في "Big Windows" ولكن هل تعمل بنفس الطريقة في Windows CE 6.0؟

على سبيل المثال:لدي خدمة إدارة الخطوط التي ستستخدمها العديد من الخدمات والتطبيقات الأخرى.تحتوي هذه الخدمة على قائمة بالخطوط والتكوينات الصالحة للطباعة والعرض؛تم استدعاء CreateFontIndirect() على كل واحد منهم.عندما يطلب أحد تطبيقات العميل هذه خطًا (وتكوينًا) معينًا، هل يمكنني إعادته بخط HFONT المناسب؟إذا لم يكن الأمر كذلك، فهل هناك طريقة آمنة/صالحة لتكرار المقبض، مثل DuplicateHandle لمقابض Kernel.

سبب سؤالي هو أنني رأيت أن HFONTs تم تمريرها إلى تطبيق آخر من خلال PostMessage تعمل بشكل صحيح، لكنني لم أعتقد أنه كان من المفترض أن تفعل ذلك.

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

المحلول

أعتقد أنك على صواب، لا يمكنك الاعتماد على كون HFONTs آمنًا للمرور عبر العمليات.

"سبب سؤالي هو أنني رأيت HFONTs التي تم تمريرها إلى تطبيق آخر من خلال PostMessage تعمل بشكل صحيح، لكنني لم أعتقد أنه كان من المفترض أن تفعل ذلك."

لم يتم تمريرها بشكل صحيح، لذلك ليس هناك "من المفترض".على الرغم من أن HFONTs غير مضمونة للعمل عبر العمليات، إلا أنها غير مضمونة أيضًا فريد عبر العمليات.قد يكون لـ "Arial" نفس قيمة HFONT في عمليتين مختلفتين في وقت ما مع إصدار معين من كل تطبيق، ويمكن أن يتغير في أي لحظة (بما في ذلك في منتصف الطريق من خلال استخدامه!)

يبدو الأمر كما لو كنت أرسم، ونفد الطلاء البرتقالي، الذي أحتفظ به باعتباره الأنبوب الثالث على حاملي.يمكنني الوصول إلى حاملك والاستيلاء على الأنبوب الثالث...ولكن ليس لدي أي ضمان أنه برتقالي.ليس لدي أي ضمان أنه يحتوي حتى على الطلاء!ربما كنت تنظف أسنانك في الميسرة اليوم..أُووبس!

تشبه مقابض GDI الرقم '3' في هذا المثال.اليوم، قد تحتفظ GDI بالأنابيب بنفس الترتيب على جميع الحاملات.قد يبقي بعضها مرتبًا، والبعض الآخر لا (على سبيل المثال، اللون البرتقالي "يعمل نوعًا ما"، ولكن تم ضبط "أخضر زبد البحر").يمكن أن تكون مرتبة على أحد أجهزة CE، ولكن ليس على جهاز آخر.

كما هو الحال دائما، YMMV.

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