تمكين Windows ClearType لعناصر تحكم نص MFC التي تم إنشاؤها في وقت التشغيل

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

سؤال

لدي برنامج مربع حوار MFC حيث أقوم بإنشاء بعض عناصر التحكم في CSTATIC و CEDIT في وقت التشغيل. بطريقة ما ، لا يتم تمكين النص الوارد في هذه عناصر التحكم (ClearType في Windows ينعم النصوص عن طريق تحديد المواقع دون بكسل وتلوين).

ومع ذلك ، عندما يضيف المرء يدويًا "تحكم تحرير" أو عنصر تحكم "نص ثابت" في وقت التصميم من صندوق أدوات Visual Studio ، يتم تمكين عناصر التحكم هذه.

إذن ، تختلف عناصر التحكم من صندوق الأدوات عن عناصر التحكم التي تم إنشاؤها في وقت التشغيل؟ هل يعرف أي شخص كيفية تمكين ClearType لعناصر التحكم النصية التي تم إنشاؤها في وقت التشغيل؟ فيما يلي مقتطف رمز لإنشاء التحكم cstatic في وظيفة oncreate في مربع الحوار:

CRect crc; crc.SetRect(100, 10, 300, 40);
m_static.Create(_T("Personeelsnummer?"), WS_CHILD | WS_VISIBLE, crc, this, IDC_STATIC1);

لم يتم تمكين النص في هذا التحكم cstatic. وضع خط مختلف ليس له أي تأثير.

أنا تائه.

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

المحلول

لقد وجدت الإجابة على سؤالي. إن الافتقار إلى ClearType على عناصر التحكم التي تم إنشاؤها في وقت التشغيل مرتبط بالخط. عندما ينشئ المرء عنصر تحكم في وقت التشغيل ، يتم استخدام خط افتراضي لا يتأثر بـ ClearType ويجب استبداله بخط مختلف.

في سؤالي ، لاحظت أنني حاولت وضع خط مختلف ، لكنني أنشأت خطًا في وظيفة محلية. بعد الخروج من الوظيفة التي تم فيها تعيين الخط تم تدمير الخط ، لذلك لم أر أي فرق. لدي الآن متغير عضو في الفصل للخط الذي يتم تدميره فقط عندما يتم تدمير الوالد CWND.

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