
إستكمالا لما بدأناه سابقا فى هذا الموضوع
سلسلة رقم 1 شرح تفصيلى لبرنامج صناعة الإضافات AMS Plugin Maker
كنا قد توقفنا عند :
هذه الوظائف هم 19 وظيفة هم كالتالى :
[gdwl]
[/gdwl]
[gdwl]
كود:
-- function OnCreateObject(ObjectPtr,InstanceHandle) function OnDeleteObject(ObjectPtr) function GetWindowHandle(ObjectPtr) function DrawDesign(ObjectPtr,HDC,WndParent,X,Y,Width,Height,Visible,Enabled) function DrawRuntime(ObjectPtr,HDC,WndParent,X,Y,Width,Height,Visible,Enabled) function GetCustomProperties(ObjectPtr) function SetCustomProperties(ObjectPtr,Properties) function ShowProperties(ObjectPtr,PluginFolder) function HideInternalObject(ObjectPtr) function DoSetFocus(ObjectPtr) function ShowWindow(ObjectPtr,Visible) function OnMouseOver(ObjectPtr,WndParent,MouseX,MouseY,X,Y,Width,Height) function OnMouseLeave(ObjectPtr,WndParent,MouseX,MouseY,X,Y,Width,Height) function OnLBtnDown(ObjectPtr,WndParent,MouseX,MouseY,X,Y,Width,Height) function OnLBtnUp(ObjectPtr,WndParent,MouseX,MouseY,X,Y,Width,Height) function OnLBtnDoubleClick(ObjectPtr,WndParent,MouseX,MouseY,X,Y,Width,Height) function OnRBtnDown(ObjectPtr,WndParent,MouseX,MouseY,X,Y,Width,Height) function OnRBtnUp(ObjectPtr,WndParent,MouseX,MouseY,X,Y,Width,Height) function OnRBtnDoubleClick(ObjectPtr,WndParent,MouseX,MouseY,X,Y,Width,Height)

كود:
function OnCreateObject(ObjectPtr,InstanceHandle)
تحتوى هذه الوظيفة على عدد 2 بارميتر وهم :
ObjectPtr حيث يعبر عن إسم البليجين وطبعا الإسم هو متغير يعبر عن رقم مقبض بليجين الأوبجيكت الناتج .
InstanceHandle حيث يعبر عن إسم المكتبة المستخدمة فى حالة تشابة إستخدام المكتبات الوظيفية طبعا الإسم هو متغير يعبر عن رقم مقبض المكتبة المستدعاه .
وعلى العموم تستخدم هذه الوظيفة بصفة عامة فى إستدعاء المكتبات البرمجية التى نستخدمها فى إنشاء البليجين أو برمجته .

كود:
function OnDeleteObject(ObjectPtr)
تحتوى هذه الوظيفة على عدد 1 باراميتر وهو :
ObjectPtr حيث يعبر عن إسم البليجين وطبعا الإسم هو متغير يعبر عن رقم مقبض بليجين الأوبجيكت الناتج .
وعلى العموم تستخدم هذه الوظيفة بصفة عامة فى إلغاء إستدعاء المكتبات البرمجية التى نستخدمها فى إنشاء البليجين أو برمجته حتى نخفف العبئ على الذاكرة "الميمورى" .

كود:
function GetWindowHandle(ObjectPtr)
تحتوى هذه الوظيفة على عدد 1 باراميتر وهو :
ObjectPtr حيث يعبر عن إسم البليجين وطبعا الإسم هو متغير يعبر عن رقم مقبض بليجين الأوبجيكت الناتج .
وعلى العموم يمكن إستخدام هذه الوظيفة للحصول على رقم مقبض بليجين الأوبجيكت الناتج وإرجاع الناتج فى صورة ريتيرن لإسم متغير يمكن فيما بعد إستدعاء أو إستخدام هذا المتغير إذا تطلب الأمر ذلك .

الوظيفة الرابعة: وظيفة رسم وتصميم البليجين فى وقت التصميم " يعنى أثناء البرمجة وكتابة الأكواد فى مشروع الأتوبلاى ميديا ستوديو" وهى :
كود:
function DrawDesign(ObjectPtr,HDC,WndParent,X,Y,Width,Height,Visible,Enabled)
ObjectPtr حيث يعبر عن إسم البليجين وطبعا الإسم هو متغير يعبر عن رقم مقبض بليجين الأوبجيكت الناتج .
HDC حيث يعبر مقبض سياق جهاز الذاكرة الحالية لبليجين الأوبجيكت .
WndParent حيث يعبر عن مقبض الإيطار الأصل لبليجين الأوبجيكت.
X حيث يعبر عن بداية الموضع الأفقى لبليجين الأوبجيكت الناتج عند إضافة وإستخدام هذا البليجين .
Y حيث يعبر عن بداية الموضع الرأسى لبليجين الأوبجيكت الناتج عند إضافة وإستخدام هذا البليجين .
Width حيث يعبر عن عرض بليجين الأوبجيكت الناتج عند إضافة وإستخدام هذا البليجين .
Height حيث يعبر عن إرتفاع بليجين الأوبجيكت الناتج عند إضافة وإستخدام هذا البليجين .
Visible حيث يعبر عن إذا كان بليجين الأوبجيكت الناتج عند إضافة وإستخدام هذا البليجين مخفى أو ظاهرا .
Enabled حيث يعبر عن إذا كان بليجين الأوبجيكت الناتج عند إضافة وإستخدام هذا البليجين مفعل أو غير مفعل .
وفى الصورة التالية توضيح لكل من X و Y و Width و Height و Visible و Enabled طبعا هذا يوضح فيما بعد إنتاج البليجين حتى نفهم هذه المصطلحات من خصائص البليجين Attributes :


الوظيفة الخامسة: وظيفة رسم وتصميم البليجين فى وقت التشغيل والمعاينة " يعنى أثناء المعاينة لمشروع الأتوبلاى ميديا ستوديو أو تشغيل المشروع النهائى" وهى :
كود:
function DrawRuntime(ObjectPtr,HDC,WndParent,X,Y,Width,Height,Visible,Enabled)

الوظيفة السادسة: وظيفة إيجاد خصائص البليجين "الخصائص التى نبرمجها للبليجين مثلا اللون وإعدادات البليجين من خط مستخدم مثلا أو تنسيق معين نريد مستخدم البليجين أن يستفيد منه وغيره وفيما يلى بالشرح سوف نتعرف سويا بالتفصيل كيف نفعل هذا" وطبعا إسم الوظيفة هى :
كود:
function GetCustomProperties(ObjectPtr)
ObjectPtr حيث يعبر عن إسم البليجين وطبعا الإسم هو متغير يعبر عن رقم مقبض بليجين الأوبجيكت الناتج .
بصفة عامة تستخدم هذة الوظيفة فى حصول البليجين وتخزينة لقيم يقوم بإعدادها المبرمج للبليجين كمثلا قيمة خلفية لونية لنص أو إمكانية تغيير شيئ معين فى البليجين أثناء وقت التصميم DrawDesign
إنظر إلى الصورة التالية :


الوظيفة السابعة: وظيفة وضع وتغيير خصائص البليجين "الخصائص التى نبرمجها للبليجين مثلا اللون وإعدادات البليجين من خط مستخدم مثلا أو تنسيق معين نريد مستخدم البليجين أن يستفيد منه وغيره وفيما يلى بالشرح سوف نتعرف سويا بالتفصيل كيف نفعل هذا" وطبعا إسم الوظيفة هى :
كود:
function SetCustomProperties(ObjectPtr,Properties)
ObjectPtr حيث يعبر عن إسم البليجين وطبعا الإسم هو متغير يعبر عن رقم مقبض بليجين الأوبجيكت الناتج .
Properties حيث يعبر عن قيمة نصية تسترجع من الوظيفة السابقة GetCustomProperties أى أننا نستخدم فيها الريتيرن الذى يتم إرجاعة فى وظيفة GetCustomProperties
بصفة عامة تستخدم هذة الوظيفة فى إيداع وتغيير البليجين لقيم يقوم بإعدادها المبرمج للبليجين كمثلا قيمة خلفية لونية لنص أو إمكانية تغيير شيئ معين فى البليجين أثناء وقت التصميم DrawDesign
فكلا الوظيفتين Get و Set مرتبطين ببعضهما البعض لآداء مهمة تغيير معين فى وقت التصميم أى ما قبل معاينة المشروع يعنى فى مرحلة وضع وبرمجة الأكواد فى برنامج الأتوبلاى ميديا ستوديو .
إنظر إلى الفيديو لتتضح الأمور أكثر بالنسبة للوظيفتين :
https://youtu.be/IanFi5aDP98

الوظيفة الثامنة: وظيفة إظهار خصائص البليجين عند ضغط المستخدم للبليجين على زر خصائص Properties وهذه الوظيفة هى :
كود:
function ShowProperties(ObjectPtr,PluginFolder)
ObjectPtr حيث يعبر عن إسم البليجين وطبعا الإسم هو متغير يعبر عن رقم مقبض بليجين الأوبجيكت الناتج .
PluginFolder حيث يعبر عن مسار تنصيب مجلد الإضافة فى مسار إضافات الأوبجيكت لبرنامج الأتوبلاى الذى تم تنصيبة على الجهاز للمبرمج .
إنظر إلى الصورة التالية حتى تعرف عن أى زر نتحدث :


الوظيفة التاسعة: وظيفة إخفاء مقبض البليجين أو إخفاء البليجين وعدم ظهورة فى حالة أننا إستخدمنا فى مشروعنا أكثر من صفحة يتم الإنتقال بينهم فلابد فى هذه الحالة من إستخدام هذه الوظيفة إذا كان البليجين الذى نقوم ببرمجته من النوع "windowed object" هذه الوظيفة هى :
كود:
function HideInternalObject(ObjectPtr)
ObjectPtr حيث يعبر عن إسم البليجين وطبعا الإسم هو متغير يعبر عن رقم مقبض بليجين الأوبجيكت الناتج .

الوظيفة العاشرة: وظيفة تمكين وضع تركيز الماوس كعنصر إدخال مثل عنصر الإينبوت أو أى عنصر من عناصر الإدخال إذا كان البليجين الذى نقوم ببرمجته من النوع "windowed object" هذه الوظيفة هى :
كود:
function DoSetFocus(ObjectPtr)
ObjectPtr حيث يعبر عن إسم البليجين وطبعا الإسم هو متغير يعبر عن رقم مقبض بليجين الأوبجيكت الناتج .

الوظيفة الحادية عشر: وظيفة تمكين إظهار وإخفاء البليجين إذا كان البليجين الذى نقوم ببرمجته من النوع "windowed object" هذه الوظيفة هى :
كود:
function ShowWindow(ObjectPtr,Visible)
ObjectPtr حيث يعبر عن إسم البليجين وطبعا الإسم هو متغير يعبر عن رقم مقبض بليجين الأوبجيكت الناتج .
Visible حيث يعبر عن قيمة بولينية إما true أو false للإظهار أو الإخفاء .

الوظيفة الثانية عشر: وظيفة حدث مرور الماوس على أو فوق عنصر البليجين الذى نقوم ببرمجته هذه الوظيفة هى :
كود:
function OnMouseOver(ObjectPtr,WndParent,MouseX,MouseY,X,Y,Width,Height)
ObjectPtr حيث يعبر عن إسم البليجين وطبعا الإسم هو متغير يعبر عن رقم مقبض بليجين الأوبجيكت الناتج .
WndParent حيث يعبر عن مقبض الإيطار الأصل لبليجين الأوبجيكت.
MouseX حيث يعبر عن الموضع الأفقى لمؤشر الماوس .
MouseY حيث يعبر عن الموضع الرأسى لمؤشر الماوس .
X حيث هو الموضع الأفقى أو بداية نقطة رسم البليجين الأفقية .
Y حيث هو الموضع الرأسى أو بداية نقطة رسم البليجين الرأسية .
Width حيث هو عرض البليجين ككل .
Height حيث هو إرتفاع البليجين ككل .
وبصفة عامة نستخدم هذه الوظيفة فى حالة أننا نريد تنفيذ أكواد معينة فى حدث مرور الماوس فوق البليجين .

الوظيفة الثالثة عشر: وظيفة حدث مغادرة مرور الماوس من على عنصر البليجين الذى نقوم ببرمجته هذه الوظيفة هى :
كود:
function OnMouseLeave(ObjectPtr,WndParent,MouseX,MouseY,X,Y,Width,Height)
ObjectPtr حيث يعبر عن إسم البليجين وطبعا الإسم هو متغير يعبر عن رقم مقبض بليجين الأوبجيكت الناتج .
WndParent حيث يعبر عن مقبض الإيطار الأصل لبليجين الأوبجيكت.
MouseX حيث يعبر عن الموضع الأفقى لمؤشر الماوس .
MouseY حيث يعبر عن الموضع الرأسى لمؤشر الماوس .
X حيث هو الموضع الأفقى أو بداية نقطة رسم البليجين الأفقية .
Y حيث هو الموضع الرأسى أو بداية نقطة رسم البليجين الرأسية .
Width حيث هو عرض البليجين ككل .
Height حيث هو إرتفاع البليجين ككل .
وبصفة عامة نستخدم هذه الوظيفة فى حالة أننا نريد تنفيذ أكواد معينة فى حدث مغادرة مرور الماوس من على البليجين .

الوظيفة الرابعة عشر: وظيفة حدث الضغط بيسار الماوس عندما تكون حالة الضغط هى لأسفل على عنصر البليجين الذى نقوم ببرمجته هذه الوظيفة هى :
كود:
function OnLBtnDown(ObjectPtr,WndParent,MouseX,MouseY,X,Y,Width,Height)
ObjectPtr حيث يعبر عن إسم البليجين وطبعا الإسم هو متغير يعبر عن رقم مقبض بليجين الأوبجيكت الناتج .
WndParent حيث يعبر عن مقبض الإيطار الأصل لبليجين الأوبجيكت.
MouseX حيث يعبر عن الموضع الأفقى لمؤشر الماوس .
MouseY حيث يعبر عن الموضع الرأسى لمؤشر الماوس .
X حيث هو الموضع الأفقى أو بداية نقطة رسم البليجين الأفقية .
Y حيث هو الموضع الرأسى أو بداية نقطة رسم البليجين الرأسية .
Width حيث هو عرض البليجين ككل .
Height حيث هو إرتفاع البليجين ككل .
وبصفة عامة نستخدم هذه الوظيفة فى حالة أننا نريد تنفيذ أكواد معينة فى حدث الضغط بيسار الماوس عندما تكون حالة الضغط هى لأسفل على عنصر البليجين .

الوظيفة الخامسة عشر: وظيفة حدث الضغط بيسار الماوس عندما تكون حالة الضغط هى لأعلى على عنصر البليجين الذى نقوم ببرمجته أى بعد الضغط بيسار الماوس "حالة رفع الإصبع عن الضغط" هذه الوظيفة هى :
كود:
function OnLBtnUp(ObjectPtr,WndParent,MouseX,MouseY,X,Y,Width,Height)
ObjectPtr حيث يعبر عن إسم البليجين وطبعا الإسم هو متغير يعبر عن رقم مقبض بليجين الأوبجيكت الناتج .
WndParent حيث يعبر عن مقبض الإيطار الأصل لبليجين الأوبجيكت.
MouseX حيث يعبر عن الموضع الأفقى لمؤشر الماوس .
MouseY حيث يعبر عن الموضع الرأسى لمؤشر الماوس .
X حيث هو الموضع الأفقى أو بداية نقطة رسم البليجين الأفقية .
Y حيث هو الموضع الرأسى أو بداية نقطة رسم البليجين الرأسية .
Width حيث هو عرض البليجين ككل .
Height حيث هو إرتفاع البليجين ككل .
وبصفة عامة نستخدم هذه الوظيفة فى حالة أننا نريد تنفيذ أكواد معينة فى حدث الضغط بيسار الماوس عندما تكون حالة الضغط هى لأعلى على عنصر البليجين أى بعد الضغط بيسار الماوس "حالة رفع الإصبع عن الضغط" .

الوظيفة السادسة عشر: وظيفة حدث الضغط بيسار الماوس مرتان على التوالى هذه الوظيفة هى :
كود:
function OnLBtnDoubleClick(ObjectPtr,WndParent,MouseX,MouseY,X,Y,Width,Height)
ObjectPtr حيث يعبر عن إسم البليجين وطبعا الإسم هو متغير يعبر عن رقم مقبض بليجين الأوبجيكت الناتج .
WndParent حيث يعبر عن مقبض الإيطار الأصل لبليجين الأوبجيكت.
MouseX حيث يعبر عن الموضع الأفقى لمؤشر الماوس .
MouseY حيث يعبر عن الموضع الرأسى لمؤشر الماوس .
X حيث هو الموضع الأفقى أو بداية نقطة رسم البليجين الأفقية .
Y حيث هو الموضع الرأسى أو بداية نقطة رسم البليجين الرأسية .
Width حيث هو عرض البليجين ككل .
Height حيث هو إرتفاع البليجين ككل .
وبصفة عامة نستخدم هذه الوظيفة فى حالة أننا نريد تنفيذ أكواد معينة فى حدث الضغط بيسار الماوس مرتان على التوالى أى بالتتابع .

الوظيفة السابعة عشر: وظيفة حدث الضغط بيمين الماوس عندما تكون حالة الضغط هى لأسفل على الزر الأيمن على عنصر البليجين الذى نقوم ببرمجته هذه الوظيفة هى :
كود:
function OnRBtnDown(ObjectPtr,WndParent,MouseX,MouseY,X,Y,Width,Height)
ObjectPtr حيث يعبر عن إسم البليجين وطبعا الإسم هو متغير يعبر عن رقم مقبض بليجين الأوبجيكت الناتج .
WndParent حيث يعبر عن مقبض الإيطار الأصل لبليجين الأوبجيكت.
MouseX حيث يعبر عن الموضع الأفقى لمؤشر الماوس .
MouseY حيث يعبر عن الموضع الرأسى لمؤشر الماوس .
X حيث هو الموضع الأفقى أو بداية نقطة رسم البليجين الأفقية .
Y حيث هو الموضع الرأسى أو بداية نقطة رسم البليجين الرأسية .
Width حيث هو عرض البليجين ككل .
Height حيث هو إرتفاع البليجين ككل .
وبصفة عامة نستخدم هذه الوظيفة فى حالة أننا نريد تنفيذ أكواد معينة فى حدث االضغط بيمين الماوس عندما تكون حالة الضغط هى لأسفل على الزر الأيمن على عنصر البليجين الذى نقوم ببرمجته .

الوظيفة الثامنة عشر: وظيفة حدث الضغط بيمين الماوس عندما تكون حالة الضغط هى لأعلى للزر الأيمن "حالة رفع الإصبع بعد الضغط على زر الماوس الأيمن" على عنصر البليجين الذى نقوم ببرمجته هذه الوظيفة هى :
كود:
function OnRBtnUp(ObjectPtr,WndParent,MouseX,MouseY,X,Y,Width,Height)
ObjectPtr حيث يعبر عن إسم البليجين وطبعا الإسم هو متغير يعبر عن رقم مقبض بليجين الأوبجيكت الناتج .
WndParent حيث يعبر عن مقبض الإيطار الأصل لبليجين الأوبجيكت.
MouseX حيث يعبر عن الموضع الأفقى لمؤشر الماوس .
MouseY حيث يعبر عن الموضع الرأسى لمؤشر الماوس .
X حيث هو الموضع الأفقى أو بداية نقطة رسم البليجين الأفقية .
Y حيث هو الموضع الرأسى أو بداية نقطة رسم البليجين الرأسية .
Width حيث هو عرض البليجين ككل .
Height حيث هو إرتفاع البليجين ككل .
وبصفة عامة نستخدم هذه الوظيفة فى حالة أننا نريد تنفيذ أكواد معينة فى حدث االضغط بيمين الماوس عندما تكون حالة الضغط هى لأعلى للزر الأيمن "حالة رفع الإصبع بعد الضغط على زر الماوس الأيمن" على عنصر البليجين الذى نقوم ببرمجته .

الوظيفة التاسعة عشر: وظيفة حدث الضغط بيمين الماوس مرتان على التوالى أو بالتتابع على عنصر البليجين الذى نقوم ببرمجته هذه الوظيفة هى :
كود:
function OnRBtnDoubleClick(ObjectPtr,WndParent,MouseX,MouseY,X,Y,Width,Height)
ObjectPtr حيث يعبر عن إسم البليجين وطبعا الإسم هو متغير يعبر عن رقم مقبض بليجين الأوبجيكت الناتج .
WndParent حيث يعبر عن مقبض الإيطار الأصل لبليجين الأوبجيكت.
MouseX حيث يعبر عن الموضع الأفقى لمؤشر الماوس .
MouseY حيث يعبر عن الموضع الرأسى لمؤشر الماوس .
X حيث هو الموضع الأفقى أو بداية نقطة رسم البليجين الأفقية .
Y حيث هو الموضع الرأسى أو بداية نقطة رسم البليجين الرأسية .
Width حيث هو عرض البليجين ككل .
Height حيث هو إرتفاع البليجين ككل .
وبصفة عامة نستخدم هذه الوظيفة فى حالة أننا نريد تنفيذ أكواد معينة فى حدث االضغط بيمين الماوس مرتان على التوالى أو بالتتابع على عنصر الأوبجيكت الذى نقوم ببرمجته .

نستكمل فيما هو قادم " إن شاء الله " و القادم أجمـــــل
تعليق