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

..::كيفية إضافة آية قرآنية باللغة العربية مع الصوت::..

مغلق
بدأه autruja في 15 أبريل 2003 · 4 رد · 1,012 مشاهدة · في الأسئلة المجابة
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم

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

الداله هي:

PlaySound("expl", hInst, SND_RESOURCE | SND_ASYNC;

فهل من الممكن أن أجد من يرشدني إلى كيفية إستخدام هذي الدالة... و إذا وجدت دالة أسهل مافي مانع أن يضيفها:P

سؤال آخر ::D.((إن ما فيه إزعاج))

حبيت أضيف آية قرآنية باللغة العربية و بحجم معين لبرنامجي و لكني لم أستطع...

الكلمات تطلع مبعثرة أو مقلوبة.....فهل يوجد دالة تساعدني بالكتابة باللغة العربية و بحجم معين في برنامج سي بلس بلس (فيجول)

و السلام عليكم

#2

شو هو الطلب صعب و لا الجميع مشغول

#3

أنا ما طلبت حل أسايمنت عشان ما ألاقي الرد!!!:(

و الا السؤال صعب؟؟؟؟:P

طيب بدون العربي......على الأقل أحد يرشدني إلى إستخدام دالة الصوت...و تكبير الخط و لا هذا كمان صعب....

أرجو الإفادة....

#4

عن جد أحبتطوني:'(:'(:'(

الله يسامحكم

#5
اقتباس
عن جد أحبتطوني

الله يسامحكم

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

بالنسبة لتغيير الخط فعليك اشتقاق غرض من الفئة CFont ومن ثم انشاء خط بواسطة التابع CreateFont ومن ثم تمرير الخط الى أداة التحكم التي سيستخدم فيها

الدالة CreateFont تأخذ 14 بارامتر سنشرحها على السريع

HFONT CreateFont(

  int nHeight, ارتفاع نمط الخط المطلوب 

  int nWidth, عرض الخط 

  int nEscapement, تحديد الزاوية التي ستكتب بها

  int nOrientation, تحدد زاوية كل حرف على حدا 

  int fnWeight, تحدد سماكة الخط ، أدنى قيمة صفر وأعلى قيمة 1000

  DWORD fdwItalic,  تحدد اذا كان الخط مائل ، 0 = false وأي قيمة أخرى تساوي true

  DWORD fdwUnderline, لرسم خط تحت الحروف 0=false وأي قيمة اخرى تساوي true

  DWORD fdwStrikeOut, لرسم خط عبر الحروف 0=false وأي قيمة أخرى تساوي true

  DWORD fdwCharSet, لتحديد الى أي مجموعة تنتمي الحروف oem,ansi ...

  DWORD fdwOutputPrecision, مقدار التقارب بين الإرتفاع والعرض

  DWORD fdwClipPrecision,  لتطويق الأحرف التي تكون خارج مساحة العرض

  DWORD fdwQuality,  لتحديد مقدار دقة الإخراج 

  DWORD fdwPitchAndFamily, كثافة الخط وفئته 

  LPCTSTR lpszFace  اسم الخط

);

بالنسبة لكثرة البارامترات في الدالة تستطيع الإستعاضة بالرقم بالصفر مكان جميع البارامترات من نوع int لتأخذ القيمة الإفتراضية ، البارامترات من نوع DWORD من عند البارامتر fdwCharSet وتحت لها قيم ثابتة لتسهيل التحكم بالخط ، تجد شرح مفصل لها بال MSDN

بالنسبة لما طلبت أضف أداة التحكم static text الى الديالوج ثم غير اسمه من ال properties->General لكي تستطيع اضافة المتغيرات له ومن الكلاس ويزارد ادخل على ال member varieble وأضف لل static متغير من نوع CString وأعطه الإسم m_strText أو أي اسم آخر ، ومتغير أخر من نوع CStatic وأعطه الإسم m_cText أو أي اسم آخر

الآن اكتب الآية التي تريدها واسندها الى المتغير m_strText وضعها داخل الحدث OnInitDialog

m_strText = "قل هو الله أحد الله الصمد لم يلد ولم يولد ولم يكن له كفوا أحد";

	UpdateData(false);

الآن تريد تحديد نوع الخط الذي ستستعمله ،يجب عليك اشتقاق متغير من الفئة CFont أعطه الإسم font،

CFont font;

ثم أضف للمشروع فنكشن جديد وأعطه أي اسم مثلا SetMyFont ونوعه void وضع الكود التالي بجسم الدالة

TCHAR szFontName[] = "Andalus";  اسم الخط المستخدم 

	font.CreateFont(50,0,0,0,FW_NORMAL,0,0,0,

  DEFAULT_CHARSET,

  OUT_CHARACTER_PRECIS,CLIP_CHARACTER_PRECIS,

  DRAFT_QUALITY,

  FF_DONTCARE,szFontName);

	m_cText.SetFont(&font);  اسناد نمط الخط المستخدم الى اداة التحكم

الأن أصبح كل شئ جاهز وبقي تشغيل الأية القرآنية ولتشغيلها استخدم الداة PlaySound ولكن يجب ان يكون ملف الأية من النوع wav وقبل ان تستخدم هذه الدالة عليك عمل انكلود للملف mmsystem.h وعمل امبورت للملف winmm.lib ولإضافته اختر projects من القائمة الرئيسية ومن ثم setting ومن ثم اختر Link وأكتب winmm.lib في خانة ال object/library modules

.

.

#include "mmsystem.h"

.

.

.

PlaySound("alekhlas.wav",NULL,SND_FILENAME);

الآن تبقى لدينا مشكلة : عند وضع التابع PlaySound داخل الحدث OnInitDialog وتشغيل التطبيق ستلاحظ أن التطبيق سيظهر بعد الإنتهاء من قراءة السورة وحتى لو ظهر التطبيق سيبقى في حالة عدم استجابة حتى الإنتهاء من قراءة السورة ، للتحايل على هذه النقطة تستطيع اضافة timer للتطبيق يشغل السورة بعد ظهور واجهة التطبيق بثانية مثلا ، هذا اذا كان المقطع صغير جدا بطول ثانية او ثانيتين لأن التطبيق سيبقى في حالة عدم استجابة لغاية انتهاء المقطع ، ما الحل اذن ؟

الحل هو ان نجعل السورة تشتغل في ثريد منفصل ويمكنك ذلك بتعريف تابع من النوع UINT ووضع الدالة PlaySound داخل جسم التابع ، ثم تمرير اسم التابع للدالة AfxBeginThread

UINT StartPlaySound(void* pvParam)

{

	PlaySound("alekhlas.wav",NULL,SND_FILENAME);

	return 0;

}

.

.

.

BOOL CFontDlg::OnInitDialog()

{

	CDialog::OnInitDialog();



	void* pvParam = NULL;

	AfxBeginThread(StartPlaySound,pvParam);

.

.

return TRUE;

}

للمزيد حول الثريد راجع هذا الموضوع

http://www.arabteam2000.com/vb/showthread....s=&threadid=229

هنا تجد البرنامج كامل

http://mhammad.topcities.com/mfc/Font.zip

لا تضغط على الوصلة استخدم save target as

هذا الموضوع مغلق.

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

عدد الزوار حالياً

المتواجدون خلال آخر دقيقتين · يتحدّث كل ٣٠ ثانية

—الإجمالي—أعضاء مسجّلون—زوار بدون تسجيل

جارٍ التحقق من المتواجدين…