سؤال

لديّ تطبيق VCL Borland C ++ (لذلك أنا لا أعمل مع Unicode حتى الآن) ، أريد أن أقدم ترجمة بسيطة لنص التسمية التوضيحية لـ Controls إلى Russian في وقت التشغيل.

يمكنني الاستخدام بسهولة enumchildwindows للحصول على التسمية التوضيحية الإنجليزية ، ثم ابحث في الترجمة واستبدال نص التسمية التوضيحية باستخدام setWindowText. هذا يعمل بشكل جيد لترجماتي الأوروبية الغربية حيث لا داعي للقلق بشأن الخط. لكنني لست متأكدًا من كيفية تعامل النسخة الروسية من Windows ثم تعامل VCL مع مجموعات الأحرف السيريلية 8 بت.

حاليا جميع عناصر التحكم VCL لديها إعدادات الخط:

Charset=DEFAULT_CHARSET
name=MS Sans Serif

هل أنا محق في افتراض أنه عندما يتم تشغيل برنامجي تحت نسخة روسية من Windows ، ستكون مجموعة الأحرف سيريلية مع default_charset الإعداد لذلك لن أحتاج إلى تغيير إعدادات الخط في جميع عناصر التحكم الخاصة بي؟

إذا اضطررت إلى تغيير الخط (في وقت التشغيل) ، في حالة وظيفة Windows API SendMessage (HWND ، WM_SETFONT ، (WPARAM) HFONT ، TRUE) العمل مع ضوابط VCL؟ لقد حاولت استخدام CreateFont () و SendMessage (.. WM_SETFONT ..) مع Russian_charset ووجه الخط السيريلي. لا يبدو أن هذا ليس له أي تأثير ، فهو يحتفظ بالخط الذي تم تعيينه لعنصر التحكم في النموذج في وقت التصميم (حتى ANSI_CHARSET ووجه الخط القياسي الذي تم تثبيته لنظام Windows لا يؤثر على خط عناصر التحكم) لذلك أبحث عن التأكيد على أنني لن أضطر إلى تغيير خط عناصر التحكم ، وإلا أخبرني بعض طريقة VCL لتحديد جميع إعدادات خطوط عناصر التحكم في وقت التشغيل.

لا يوجد حل صحيح

نصائح أخرى

ليست هناك حاجة لإعادة اختراع الدراجة. لماذا لا تستخدم أدوات بيئة ترجمة التكامل التي يتم توفيرها مع Borland C ++ Builder؟ هناك معالج سيساعدك في الترجمات وسيقوم بإنشاء ملف مورد خاص سيحتوي على ترجمة لجميع السلاسل النصية في التطبيق الخاص بك. بعد ذلك ، سيقوم البرنامج بالتحقق من لغة النظام وملفات موارد اللغة المتاحة عند بدء التشغيل ، وسيستخدم اللغة المناسبة تلقائيًا. تحقق من نظام مساعدة منشئ C ++ مع فهرس - "بيئة الترجمة المتكاملة (ITE)" للحصول على وصف أكثر تفصيلاً للعملية.

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