الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

اليك طريقة إظهار النص العربي على شاشة الدوس باستخدام Api

بدأه فهدالشلوي في 22 يونيو 2008 · 6 رد · 4,901 مشاهدة · في قسم المواضيع الهامة في قسم السي /سي++
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم:

قراءت امس مشاركة لا حد الاعضاء يسال عن طريقة كتابه الفرنسية والعربية على نافذه الدوس

واليوم جربت بعض الدوال وضبطت معي وهذا الكود للفائدة

[background=#80ffff]
#include<windows.h>
int main()
{  
    HWND mycommand=GetConsoleWindow();//مقبض نافذه الكتابة
    HDC myhdc=GetDC(mycommand);//مقبض الرسم والكتابه بمعرفه مقبض النافذه
    SetTextColor(myhdc, RGB(255,255,255));//لون النص
    SetBkColor(myhdc, RGB(0,0,0));//لون الخلفيه
    wchar_t* line1=L"بسم الله الرحمن الرحيم";
    wchar_t* line2=L"الحمدلله رب العالمين";
    TextOutW(myhdc,150,50 ,line1,::wcslen(line1));//دالة الكتابة
    TextOutW(myhdc,150,100 ,line2,::wcslen(line2));
return 0;
}[/background]

ارجو تجربته لمعرفه هل الكود يعمل دائما ام ان هناك مشاكل.

تم تعديل هذه المشاركة بواسطة فهدالشلوي في 22 يونيو 2008 في 18:40

tvquran_6.gif

#2

الكود لم يعمل بالشكل المطلوب.

جربته على code blocks ولم يعمل أبداً.

وجربته على VS وضبط لكن السطر الأول فقط (بسم الله الرحمن الرحيم). وكذلك عند تكبير شاشة الدوس تذهب الكتابة ولاتظهر حتى لو تم تصغيرها مرة أخرى!!.

على العموم شكراً لك أخي فهد على الإفادة.

#3

السلام عليكم ,,

تعجبني أفكارك أخي فهد :)

في الحقيقة أن Windows Console يعتبر شاشة نصية, أو ما يسمى Command Line Interface,

هذه الشاشة تختلف في طريقة عرضها للبيانات عن الشاشات الرسومية GUI, التي تعتمد البكسل على أنه وحدة رسم,

و عندما تريد طباعة الحروف في الشاشات الرسومية فإن تلك الحروف تعامل على أنها صور(تقريباً), (هناك ملفات كالموجودة في مجلد الويندوز font تحدد أشكال تلك الحروف),

بينما في الشاشة النصية, فإنه لا يمكننا الرسم و لكن يمكننا طباعة النصوص, بالطبع على شكل حروف,

و ذاكرة الشاشة النصية screen buffer عبارة عن مصفوفة ثنائية الأبعاد تحدد عدد الحروف في كل سطر, و عدد الأسطر,

غالباً 25 سطراً كل سطر يمكنه استيعاب 80 حرفاً,

عموماً, حتى في طريقة طباعة الحروف, فإن الشاشة النصية تعتمد على الخطوط الـ fixed width أي أن كل عرض الحرف ثابت باختلاف الحرف,

بينما في الشاشات الرسومية يتم استخدام الخطوط الـ variable width, فمثلاً حرف الألف "أ" عرضه أقل من حرف السين "س",

لنرجع لموضوعك,

الـ Command Line في الويندوز ما هو إلا شاشة لديها دوال خاصة, تسهل من عملية إدخال النصوص و إخراجها دون الدخول في عملية الرسم و المحاذاة و ما إلى ذلك,

أنت قمت باستخدام دوال النوافذ في winApi للرسم على تلك الشاشة النصية, و قمت بمعاملتها على أنا شاشة عادية form :)

لذلك فأنت مسؤول عن عملية تحديث النافذة و محاذاة النصوص المرسومة عليها,

في الحقيقة أن بناء Console يدعم العربية بشكل كامل ليس بتلك الصعوبة, و ربما نضع محاولة و نحاول تطويرها,

و أحد الـ Consoles المحترمة يسمى Console2 ذكرته في إحدى ردودي على إحدى مواضيعك أخ فهد, أعتقد أن الموضوع كان عن تلوين الشاشة النصية :)

تحياتي ,,

تم تعديل هذه المشاركة بواسطة Khaled.Alshaya في 23 يونيو 2008 في 06:41

#4
اقتباس
الكود لم يعمل بالشكل المطلوب.

جربته على code blocks ولم يعمل أبداً.

وجربته على VS وضبط لكن السطر الأول فقط (بسم الله الرحمن الرحيم). وكذلك عند تكبير شاشة الدوس تذهب الكتابة ولاتظهر حتى لو تم تصغيرها مرة أخرى!!.

اشكرك اخوي m4designعلى تجربة الكود .

بالنسبة لعمله على المصرف code blocks فالمصرفات تتصرف بطرق مختلفه وتحتاج الى اضافه مكتبات للدوال

ان شاء الله سوف احاول فيه اذا طلعت بشئ مفيد سوف اعرضه .

tvquran_6.gif

#5

خالد وعليكم السلام.

اشكرك على رفع المعنويات.

عند البحث في مكتبه مايكروسوفت هناك عشرات الدوال فقط للكنسول المشكله ليس من السهل معرفه البارمتر المناسب

والتحويل من نوع الى نوع مشكله اخرى فالبيانات انواع مختلفه والتحويل بينها تحتاج تقراء كذا موضع من اجل التحويل

شاكر مرورك الكريم.

tvquran_6.gif

#6

كنت ابحث عن هذه الطريقة منذ سنوات

لقد طبقها من قبل مبرمج عربي بالفيجوال بيسيك

شكرا لك فهد

( _ /)

(='.'=)

(")-(")

#7

أهلا garo

هناك طريقة راح تكون أفضل تعتمد على استخدام خط مناسب للكنسل المشكله خطوط الكنسل تختلف عن خطوط الوندوز

وتحتاج الى اطلاع اكثر ومجهود أكبر ياتي مع النظام نوعين خط فقط للكنسل. استطيع من خلال الرجستر تغييرها لكن احتاج الى خط مناسب.

tvquran_6.gif

مواضيع مشابهة