vb6;استفاده از فونت فارسی به صورتی که روی هر کامپوتری خونده بشه؟؟؟

سلام...
برنامه ای نوشتم که پیغام هاش به زبان فارسی هستند. وقتی این برنامه رو به صورت یک فایل exe در سیستم های دیگه اجرا می کردم گاهی فونت فارسیش خونده نمی شد.برای حل این مشکل چه کار کنم؟لطفا کمک کنید...
متشکرم...
 

Saeed

Well-Known Member
سلام

از فونت های پیشفرض خود ویندوز Tahoma, Ariyal که تاهوما بهتره
اگه نخواستید تنها روش اینه که فونت رو به ویندوز خاطی به صورت دستی کپی کنید یا برنامه ای بنویسید که اتوماتیک کپی کنی

موفقیت
 

western

Member
سلام

ببین دوست عزیز شما اگه مشکلت یه فونت خاص هست که طبق گفته استاد خودم آقا سعید باید اون فونت رو تو سیستم مقصد کپی کنی

اما من فکر میکنم مشکل اینه که حتی فونتای خود ویندوز مثل تاهما استفاده میکنی یه سری علامت سوال و ... تو سیستم مقصد میبینی
برای این مشکل تو سیستم مقصد از control panel > regional and language options زبان فارسی رو نصب کنی
هم توی tab اول (regional options) فارسی رو انتخاب کن، توی tab دوم (languages) گزینه "install files for complex..." رو تیک بزن و تو tab سوم (advanced) هم زبان فارسی رو انتخاب کن، قاعدتا مشکلت باید حل بشه


ارادتمند - محمد آشتیانی
 

the_king

مدیرکل انجمن
طبیعتا اگه برنامه شما قراره روی سیستم دیگری قابل اجرا باشه بصورت یک فایل اجرایی exe کامپایل اش می کنید.
اگر می خواهید که فونت هایی بجز فونت های اصلی ویندوز (مثلا Tahoma و Arial و ...) استفاده کنید (مثلا B Homa )
بهتر است که فونت مورد نظرتان را همراه با برنامه exe توسط یک ابزار Setup ساز به یک Setup تبدیل کنید
چون آن برنامه Setup ساز نصب شدن فونت را به سادگی انجام می دهد، اما اگر می خواهید که نصب شدن فونت توسط
کد برنامه خودتان انجام شود، فایل فونت را کنار فایل اجرایی تان کپی کنید (مثلا BHoma.ttf) و توسط کد زیر آنرا
در ابتدای کد برنامه تان در سیستم نصب کنید و در خاتمه کار برنامه حذف کنید:
کد:
Option Explicit

Private Declare Function AddFontResource Lib "gdi32.dll" Alias "AddFontResourceA" (ByVal lpFileName As String) As Long
Private Declare Function RemoveFontResource Lib "gdi32.dll" Alias "RemoveFontResourceA" (ByVal lpFileName As String) As Long

Private Sub Form_Initialize()
    AddFontResource "BHoma.ttf"
End Sub

Private Sub Form_Terminate()
    RemoveFontResource "BHoma.ttf"
End Sub

برای آنکه نوشته های فارسی بدرستی و بدون کاراکتر های ???? مشاهده شوند، از کنترل هایی که Unicode هستند
استفاده کنید (بایستی پیش از اجرا برنامه شما نصب شده باشند) :

ActiveX فارسی نویسی برای VB - GamaForum
ActiveX فارسی نویسی برای VB - MajidOnline

نمونه برنامه هایی که بدون استفاده از کنترل های ActiveX نوشته های فارسی را نمایش می دهند را هم قبلا در فروم
قرار داده ام. برای نمایش متن بجای Label های استاندارد از توابع DrawTextW و یا TextOutW استفاده می کنند که
متن فارسی شان به همان صورت Unicode که هست باقی بماند و به ANSI تبدیل نشود.
 

Alireza Goodarzi

New Member
سلام دوستان
خیلی از اون وقت ها گذشته ولی برنامه های vb6 هنوز دارند کار می کنند! مشکل فونت فارسی رو در ویندوز 10 کسی حل کرده؟
من تنظیمات لازم رو انجام دادم در ویندوز 10. برنامه vb6 بعد از نصب، فونت ها رو در محل درستش کنار بقیه فونت ها کپی می کنه.
فونت های فارسی در NotPad هم به درستی تایپ میشه و خواناست.
ولی برنامه vb6 رو که اجرا می کنم کد های اسکی رو میبینم برای متن های فارسی. بعضی جاها هم علامت سوال.
توضیح اینکه برنامه بدون مشکل رو ویندوز های 7 و پایین تر بدون مشکل کار می کنه.
کمکی می تونید بکنید ممنون میشم.
این آیکون برنامه روی دسکتاپ هست.
vb61.PNG

این یک پیغام هستش.
vb62.PNG
vb63.PNG
 

the_king

مدیرکل انجمن
سلام دوستان
خیلی از اون وقت ها گذشته ولی برنامه های vb6 هنوز دارند کار می کنند! مشکل فونت فارسی رو در ویندوز 10 کسی حل کرده؟
من تنظیمات لازم رو انجام دادم در ویندوز 10. برنامه vb6 بعد از نصب، فونت ها رو در محل درستش کنار بقیه فونت ها کپی می کنه.
فونت های فارسی در NotPad هم به درستی تایپ میشه و خواناست.
ولی برنامه vb6 رو که اجرا می کنم کد های اسکی رو میبینم برای متن های فارسی. بعضی جاها هم علامت سوال.
توضیح اینکه برنامه بدون مشکل رو ویندوز های 7 و پایین تر بدون مشکل کار می کنه.
کمکی می تونید بکنید ممنون میشم.
این آیکون برنامه روی دسکتاپ هست.
مشاهده پیوست 112495

این یک پیغام هستش.
مشاهده پیوست 112496
مشاهده پیوست 112497
برنامه ای که با VB6 ساخته شده مثل خروجی خیلی از نرم افزار های قدیمی متن هاش unicode نیست، non-unicode ئه.
برای اینکه اینجور متن های non-unicode درست نمایش داده بشه باید در ویندوز تنظیم non-unicode روی زبان مورد نظر (فارسی) قرار بگیره.
اون بخش Region رو انتخاب کنید.
در پنجره اش Administrative رو انتخاب کنید.
روی دکمه change system locale کلیک کنید و زبان مورد استفاده برای متن های non-unicode رو مشخص کنید و OK کنید.
 

SajjadKhati

کاربر فعال <A href="http://forum.majidonline.com/f
برنامه ای که با VB6 ساخته شده مثل خروجی خیلی از نرم افزار های قدیمی متن هاش unicode نیست، non-unicode ئه.
برای اینکه اینجور متن های non-unicode درست نمایش داده بشه باید در ویندوز تنظیم non-unicode روی زبان مورد نظر (فارسی) قرار بگیره.
اون بخش Region رو انتخاب کنید.
در پنجره اش Administrative رو انتخاب کنید.
روی دکمه change system locale کلیک کنید و زبان مورد استفاده برای متن های non-unicode رو مشخص کنید و OK کنید.

سلام
استاد علی ، این به دات نت مربوطه یا به زبان؟
خروجی برنامه های سی شارپ ، unicode هه و نیازی به این تنظیماتی که گفتین ، نداره یا داره؟
 

the_king

مدیرکل انجمن
سلام
استاد علی ، این به دات نت مربوطه یا به زبان؟
خروجی برنامه های سی شارپ ، unicode هه و نیازی به این تنظیماتی که گفتین ، نداره یا داره؟
در حالت کلی نه. ارتباطی با NET. نداره، متن های Unicode-16 و Unicode-32 و UTF-8 و ... مشکلی از این لحاظ ندارند.
زمانی که این نرم افزار های قدیمی مثل Visual Basic تولید می شدند، هنوز سیستم عامل ویندوز Unicode رو بصورت کامل پشتیبانی نمی کرد و به همین جهت با استفاده از توابع قدیمی ANSI ویندوز طراحی شده اند.
حتی با وجودی که از نظر داخل زبانی متن های ویژوال بیسیک 6 بصورت Unicode ذخیره می شوند، چون موقع نمایش با توابع و پنجره های ANSI کار می کنند، اگه انتخاب زبان و Codepage مناسبی صورت نگرفته باشه درست نمایش داده نمیشن. در نرم افزار هایی که به زبان VB6 نوشته شدن هم اگر برنامه نویس با یکم زحمت بیشتر از کنترل ها و توابع API ئه Unicode استفاده کنه همچین مشکلی پیش نمیاد.
برعکسش هم هست، یعنی اگر داخل NET. هم بخواهید متن Unicode رو با توابع API ئه ANSI نمایش بدید احتمال بروز این مشکل وجود داره.
 

جدیدترین ارسال ها

بالا