متعدد العمليات إنشاء مؤشرات ترابط واجهة المستخدم

مؤشر ترابط واجهة المستخدم يستخدم لمعالجة إدخال المستخدم والاستجابة لأحداث المستخدم بشكل مستقل عن مؤشرات الترابط التى تنفذ أجزاءً أخرى من التطبيق. مؤشر ترابط التطبيق الرئيسي (المتوفر فى الفئة المشتقة من CWinApp الخاصة بك) تم إنشاؤه و تشغيله لك بالفعل. يصف هذا الموضوع الخطوات الضرورية لإنشاء مؤشرات ترابط واجهة مستخدم إضافية.

أول شيء يجب القيام به عند إنشاء مؤشر ترابط واجهة مستخدم هو اشتقاق فئة من CWinThread. يجب أن تقوم يالتصريح بهذه الفئة ثم تنفيذها، باستخدام وحدات الماكرو DECLARE_DYNCREATE و IMPLEMENT_DYNCREATE . هذخ الفئة يجب أن تتجاوز بعض الوظائف، و يمكن أن تتجاوز أخرى. تم تقديم هذه الدالات و ما الذي يجب أن تنجزه في الجدول التالي.

الدالات التى ينبغى أن تُتجاوَز عند إنشاء مؤشر ترابط واجهة مستخدم

الوظيفة

الغرض

ExitInstance

تنفذ التنظيف عندما ينتهي مؤشر الترابط. تُتجاوَز عادةً.

InitInstance

تُنفذ تهيئة مثيل مؤشر ترابط. يجب أن تُتجاوز.

OnIdle

تُنفذ معالجة وقت الخمول خاصة بمؤشر ترابط. لا تُتجاوَز عادةً.

PreTranslateMessage

تُصفي الرسائل قبل أن يتم إرسالها إلى TranslateMessage و DispatchMessage . لا تُتجاوَز عادةً.

ProcessWndProcException

توقف الاستثناءات الغير المعالجة المطروحة بواسطة معالجات "رسالة و أمر" مؤشر ترابط. لا تُتجاوَز عادةً.

Run

الدالة المتحكمة لمؤشر الترابط. تحتوي على مضخة الرسائل. نادراً ما تُتجاوَز.

يوفر MFC إصدارين من AfxBeginThread من خلال التحميل الزائد للمعلمة: واحد لمؤشرات ترابط واجهة المستخدم و الآخر لمؤشرات ترابط العامل. لبدء تشغيل مؤشر ترابط واجهة المستخدم ، قم باستدعاء AfxBeginThread ، مع توفير المعلومات التالية:

  • RUNTIME_CLASS للفئة المشتقة من CWinThread.

  • (اختياري) مستوى الأولوية المطلوب. الافتراضي هو أولوية عادية. للحصول على مزيد من المعلومات حول مستويات الأولوية المتوفرة، راجع SetThreadPriority في Windows SDK.

  • (اختياري) حجم المكدس المطلوب لمؤشر الترابط. الافتراضي هو نفس حجم مكدس مثل مؤشر الترابط المنشيء.

  • (اختياري) create_suspended إذا كنت ترغب في إنشاء مؤشر الترابط في حالة توقف مرحلي. القيمة الافتراضية هي 0 أو بدء مؤشر الترابط بشكل عادي.

  • (اختياري) سمات الأمان المطلوبة. الافتراضي هو نفس إمكانية الوصول كمؤشر الترابط الأصل. للحصول على مزيد من المعلومات حول تنسيق معلومات الأمان هذه، راجع SECURITY_ATTRIBUTES في Windows SDK.

AfxBeginThread يقوم بمعظم العمل لك. فإنه يقوم بإنشاء كائن جديد من الفئة الخاصة بك ، تهيئتها بالمعلومات التي توفرها ثم استدعاء CWinThread::CreateThread لبدء تنفيذ مؤشر الترابط. يتم إجراء اختبارات خلال الإجراء للتأكد من أن كافة الكائنات تم إلغاء تخصيصها بشكل صحيح في حالة فشل أي جزء من الإنشاء.

ما الذى تريد معرفة المزيد حوله ؟

راجع أيضًا:

المبادئ

تعدد العمليات بـ ++C و MFC