شكراً أخي هاني ولكن كنت قلت أنه لا يعمل البرنامج عندما أضع RichEdit
حتو ولو فعلت الخيالر ActiveXControl فما السبب وما الحل
شكراً أخي هاني ولكن كنت قلت أنه لا يعمل البرنامج عندما أضع RichEdit
حتو ولو فعلت الخيالر ActiveXControl فما السبب وما الحل
قصدك أنه لم يعمل .. طبعا لن يعمل لأن هذا ليس ب COM Control .. ال RichEdit موجود في ملف DLL وفي حالة عدم استخدامك لمكتبة ال MFC في اظهار هذا ال RichEdit فإنك سوف تحتاج إلى كتابة كود تحميل المكتبة يدويا .. أذكر أني مرة دخلت على كود ال MFC حتى أعرف لماذا لم يعمل معي ال RichEdit ..
قم بتجريب تحميل المكتبة Riched20.dll بشكل ديناميكي بواسطة LoadLibrary .. ومن ثم استخدم الclassname التالي RichEdit20A من أجل أن تعمل CreateWindow لل RichEdit ..
Coding on the Cloud and for the Cloud!
أعتقد أنه ليس من الداعي استخدامها! .. إذا كنت تستخدم 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!
شكراً للشرح ولكن عندما أضع الـ RichEdit على Dialog لا يعمل البرنامج مع أنه
لا يعطي أي خطأ
اخوي اسماعيل ....
فيه فرق ما بين ان تضع 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 مثبته و مسجله)
اتمنى ان اكون وضحت الموضوع ...
فقط
شكراً أخ هاني لقد عمل البرنامج عندما أضفت AfxInitRichEdit وهذا ما كنت أريده
والأخ Developer.Net الشكر الجزيل لك لهذه المعلومات المفيدة
الكلام الذي ذكرته هو لتبيين انه لإستخدام ال RichEdit يوجد طريقتين .... بإستخدام ActiveX و بإستخدام windows class و طريقتك يا هاني هي بإستخدام ال windows class ...
هذا الذي اردت قوله فقط !!!
هذا الموضوع مغلق.