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

دروس متقدمة في ال API نبدؤها ب SubClassing

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

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

مثلاً حتى تغلق نافذة عليك إرسال رسالة الـ WM_CLOSE إلى النافذة المحددة و هذه النافذة ستقوم بإغلاق نفسها.

الدالات المستخدمة لإرسال الرسائل هما: PostMessage و SendMessage و الفرق بينهما هو أن الأولى سترسل الرسالة إلى طابور (رتل) الرسائل للنافذة المحددة بينما الثانية تنتظر معالجة الرسالة من قبل النافذة الهدف.

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

الدالة الأولى يتم تعريفها عبر:

Public Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long

بارامترات الدالة:

. hwnd مقبض النافذة التي تريد إرسال رسالة لها.

لجلب المقبض هذا هناك عدة حالات : 1) النافذة هي عنصر في برنامجك عندها المقبض يكون في خاصية النافذة (العنصر) المحدد CONTROLNAME.hwnd.

2) النافذة تقع خارج التطبيق :نستخدم البحث FindWindow إن كنا نعرف عنوان النافذة أو نستخدم FindWindowEX للبحث عن نافذة ابن داخل نافذة أب. إذا كنا نعرف اسم الـ Class للنافذة أو عنوانها.

. wMsg (متغير رقمي Long) الرسالة التي تريد إرسالها مثلاً WM_CLOSE انتبه يجب أن تكون قد أعلنت عن هذا الثابت و أسندت له قيمته الحقيقية Public Const WM_CLOSE =16.

إن كنت تريد استخدام رسائل خاصة بتطبيقك فيجب أن تكون قيمتها أكبر من قيمة الـ WM_USER و التي هي بالهيكس &H400 أو 1024 كقيمة رقمية.

. wParam بارامترات الأمر إن وجدت و إلا فأرسل صفراً 0.

. lParam بارامترات أخرى إضافية إن وجدت.

لا بد و أنك تستفسر ماهي الـ SubClassing .

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

في الدروس القادمة سنأخذ أمثلة عن إرسال الرسائل و ثم ننتقل إلى دالة جلب و تغيير شكل و خصائص نموذج SetWindowLong و GetWindowLong و أخيراً سنعطي طريقة الـ SubClassing لأنها ستعتمد على ما أعطيناه.

تحياتي

#2

السلام عليكم ورحمة الله وبركاته

أولا أحب ان اشكرك على جهودك , منذ فترة طويلة وانا ابحث عن موقع لتعليم API في الفيجيوال .

أريد ان تستمر في دروسك اذا تكرمت واود ان اسألك بالنسبة لاستعمال برنامج

API viwer وهل هذا البرنامج الذي يعطيني اسم الدالة لاستعمالها في API

وما هية طريقة استخدامها الدوال فأنا مبتدئ جدا في API

وشكرا لك

سلام

لتنزيل اخر البرامج المساعده للمبرمجين والبرامج بشكل عام

http://www.tahmeelnet.blogspot.com

#3

السلام عليكم

بالنسبة للـ API Viewer يوجد به أغلب الـ API للمكتبات القياسية بالوندوز و ستجد به كل دالة و كيفية الأعلان عنها بشكل صحيح مع الثوابت الخاصة و بنى المعطيات الخاصة إن وجد ...

كمبتدأ أنصحك باقتناء برنامج API Guide فهو ممتاز يحتوي على عدد من الدالات مع شرح لكل منها بالإضافة إلى الأمثلة ...

و إن واجهت بعض الصعوبات في الحصول على الأساسيات أنصحك باقتناء كتاب "دليل برمجة API باستخدام فيجوال بيسك" عدد صفحاته 1260 !!!

الـ API مانها صعبة على الأطلاق بس إذا تم التأسيس لها بشكل جيد يعني إذا فهمت أنواع المعطيات و بعض الدوال الرئيسية فكل شي راح يكون عادي.

على كل حال انتظر موضوع راح أطرحه عن كيفية الاستغناء عن حفظ استدعاءات الـ API و الأستغناء عن API Viewer .

عنوان موقع البرنامج اللي خبرتك عنه http://www.allapi.net

سلام

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

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