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

RichEdit

مغلق
بدأه إسماعيل عنجريني في 16 يناير 2003 · 11 رد · 800 مشاهدة · في ارشيف قسم C/C++
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

شكراً أخي هاني ولكن كنت قلت أنه لا يعمل البرنامج عندما أضع RichEdit

حتو ولو فعلت الخيالر ActiveXControl فما السبب وما الحل

#2

قصدك أنه لم يعمل .. طبعا لن يعمل لأن هذا ليس ب COM Control .. ال RichEdit موجود في ملف DLL وفي حالة عدم استخدامك لمكتبة ال MFC في اظهار هذا ال RichEdit فإنك سوف تحتاج إلى كتابة كود تحميل المكتبة يدويا .. أذكر أني مرة دخلت على كود ال MFC حتى أعرف لماذا لم يعمل معي ال RichEdit ..

قم بتجريب تحميل المكتبة Riched20.dll بشكل ديناميكي بواسطة LoadLibrary .. ومن ثم استخدم الclassname التالي RichEdit20A من أجل أن تعمل CreateWindow لل RichEdit ..

Coding on the Cloud and for the Cloud!

My Blog

#4

أعتقد أنه ليس من الداعي استخدامها! .. إذا كنت تستخدم MFC فإنك إذا وضعتها على ال Dialog واستخدمت CRichEditCtrl فليس من الداعي فعل أي من ما ذكرته فوق ..

إذا لم تستعمل CRichEditCtrl وأيضا أنت بال MFC فيمكنك استدعاء AfxInitRichEdit وهي سوف تتولى بالأمر ..

إذا لم تستخدم MFC فعليك بالكلام الذي ذكرته بالأعلى وتستخدم CreateWindow كالتالي :

HWND hWnd = CreateWindow(

  _T("RichEdit20A"),  // registered class name

  _T(""), // window name

  WS_CHILD | WS_ENABLED | WS_VISIBLE,        // window style

  10,                // horizontal position of window

  10,                // vertical position of window

  100,           // window width

  100,          // window height

  m_hWnd,      // handle to parent or owner window

  NULL,          // menu handle or child identifier

  NULL,  // handle to application instance

  NULL   // window-creation data

);

Coding on the Cloud and for the Cloud!

My Blog

#6

شكراً للشرح ولكن عندما أضع الـ RichEdit على Dialog لا يعمل البرنامج مع أنه

لا يعطي أي خطأ

#7

أخي اسماعيل آسف أن المشكلة طولت معك الكثير .. لكنك فهمتني غلط ..

لأسهل عليك ضف AfxInitRichEdit في InitInstance ..

BOOL MyDialogApp::InitInstance()

{

	AfxInitRichEdit();

Coding on the Cloud and for the Cloud!

My Blog

#8

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

فيه فرق ما بين ان تضع RichEdit - ActiveX في ال Dialog و مابين انك تصنع

نافذة باستدعاء الدالة

 CreateWindow("RichEdit02", ......)

الفرق هو كالتالي:

1- في الحالة الأولى ( عندما تكون ActiveX )، عليك ان تطلب من الفيجوال سي++ بإنشاء كلاس تغلف ال RichEdit ، و تستطيع عندها القيام بإدخال ال RichEdit في ال Dialog و تعريف متغير نوعه هو الكلاس التي تم إنشاءها .... بعد ذلك كل ماعليك هو مناداة ال methods للتفاعل مع ال Rich Edit .

عملية إنشاء كلاس تغلف ال Rich Edit تتم كالتالي :

* - قم بإخال ال RichEdit داخل ال Dialog .

* - ادخل على ال ClassView و اختر تاب Member Variable .... و حدد الاداة من القائمة بالاسفل و اضغط على زر Add Variable.

* - بعد الخطوة الثانية سيقوم الفيجوال سي++ بإنشاء كلاس تغلف ال RichEdit .

2 - في الحالة الثانية، يجب عليك بصناعة نافذة بمناداة الدالة CreateWindow و إرسال RichEdit02A كأسم لل windows class، و لكن قبل ذلك يجب عليك تحميل الملف Riched20.dll في ال address space لبرنامجك باستخدام الدالة LoadLibrary ( الدالة AfxInitRichEdit(); تقوم بنفس هذه العملية من اجلك ). طبعا بعكس الطريقة الأولى سيكون طريقة التفاعل مع ال RichEdit في هذه الطريقة عن طريق إرسال رسائل SendMessage إلى ال RichEdit .

و لجعل الموضوع اكثر وضوحا هذا مثالين كل مثال يستخدم طريقة.:

يجب الانتباه إلى ان الطريقة الأولى ( ان تكون ال RichEdit عبارة عن ActiveX) تتطلب ان تكون ال RichEdit Control مثبته و مسجله في النظام... ( إذا كان الفيجوال بيسك مثبت في النظام لديك فال RichEdit Control مثبته و مسجله)

اتمنى ان اكون وضحت الموضوع ...

فقط

#9

أخي Developer.NET ال RichEdit المستخدمة هنا ليست OCX .. حتى أنه يمكن استخدامها من غير ماداة AfxOleInit .. كل مافي الأمر أن ال Entrypoint للمكتبة Riched20 تقوم بتسجيل ال classname الذي هو RichEdit02A في ال address space ...

Coding on the Cloud and for the Cloud!

My Blog

#10

شكراً أخ هاني لقد عمل البرنامج عندما أضفت AfxInitRichEdit وهذا ما كنت أريده

والأخ Developer.Net الشكر الجزيل لك لهذه المعلومات المفيدة

#11

الكلام الذي ذكرته هو لتبيين انه لإستخدام ال RichEdit يوجد طريقتين .... بإستخدام ActiveX و بإستخدام windows class و طريقتك يا هاني هي بإستخدام ال windows class ...

هذا الذي اردت قوله فقط !!!

#12

أها :cool: طيب ماكنت توضح أكتر .. (f)

Coding on the Cloud and for the Cloud!

My Blog

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

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