كيف تقوم بأضافة دائما فى المقدمة أو Always on top لبرنامج مكتوب بالفيجوال سى برمجيا الجزء الثانى
والآن لماذا إخترنا Check Box والسبب أن هذه الدالة لها حالتين حالة عند وجود علامة صح بجوارها وحالة أخرى عن عدم وجود هذه العلامة بجوارها فمثلا عند وجود علامة الصح هذا معناه أن البرنامج سيكون أعلى كل التطبيقات بمعنى أن أى برنامج سيعمل سيكون برنامجنا فوقه (ظاهر على الشاشة دائما)
أما فى الحالة الأخرى فأن أى برنامج أخر سيعمل بعد برنامجنا سيكون هو بالأعلى.
والآن يجب أن نعطى لأداة الCheck Box إسم متغيير من أجل حساب هل الأداة عاملة (بجوارها علامة صح) أم لا هذا من خلال النقر نقرتين (Double Click )+الضغط على )Ctrl) فى نفس الوقت أى Ctrl+(Left mouse button Double Click) أو من طريق أخر
إضغط على (Ctrl+W) من لوحة المفاتيح لتفتح MFC ClassWizard ثم تأكد أنك على Member Variables وأختار IDC_TOP من Control IDs ثم إضغط على زر Add Variables
ستفتح لك نافذة Add Member Variable ثم أدخل فى خانة Member variable name إسم متغير وليكن m_top وتأكد من أنه من النوع Value بداخل Category وهذه القيمة من نوع BOOL بداخل Variable type ثم إضغط على OK لتعود الى بيئة العمل أنظر الأشكال

شكل(15)

شكل(16)

شكل(17)
وبهذا تكون الأداة جاهزة للعمل ولكن يتبقى لنا الكود ..
والآن أنقر كليك مزدوجة أو Double click على ال Check Box من أجل إضافة دالته الى الكود ثم أضغط على Ok أو من طريق اخر أضغط على (Ctrl+W) من لوحة المفاتيح لتفتح MFC Class Wizard ثم تأكد انك على Message Maps

شكل(18)

شكل(19)
ملاحظة
يجب أن تتأكد من أن Class name هو CAlwaysontopDlg لأن فى هذا البرنامج يوجد
CAlwaysontopDlg و CAlwaysontopApp و CAboutDlg وأى واحدة فيهم غير CAlwaysontopDlg ستؤدى الى فشل البرنامج أى عدم الحصول على الهدف المطلوب
ثم اختر IDC_TOP من Object IDs ومن ال Messages اختر BN_CLICKED ثم إضغط على زر Add Function لإضافة الدالة الى الكود ثم أضغط على OK
كما هو بالشكل

شكل(20)
ثم أضغط على Edit Code سينقلك الفيجوال سى الى المنطقة التى سنكتب فيها الكود والى المكان التى ستكتب الكود فيه بالتحديد
ملاحظة
لو فقدت مكان إضافة الكود تأكد من انك بداخل الملف AlwaysontopDlg وأبحث عن الدالة void CAlwaysontopDlg::OnTop
للوصول الى الملف AlwaysontpDlg من FileView أنظر أول الدرس لمعرفة ما هى FileView فى حالة نسيانها أنقر على Alwaysontop files نقره مزدوجه ثم أنقر على Source files نقره مزدوجة أيضا ثم على AlwaysontopDlg.cpp نقره مزدوجه ليفتح لك ملف الكود وأبحث بداخله عن دالة void CAlwaysontopDlg::OnTop()
قم بمسح السطر TODO: Add your control notification handler code here// لأنه عباره عن ملاحظة أن هذا المكان لأضافة الكود لهذه الأداة
ثم أضف الكود التالى

الشكل(21)

الشكل(22)
ملاحظة
أضف السطور التى باللون الأحمر فقط لأن باقى الأسطر ستجدها مكتوبه
ثانيا آسف لإطالة الدرس ولكنى أريد أن يتعلمه حتى الذى لا يعرف شئ عن الفيجوال سى
والأن لحظة الأكود اللحظة التى ينتظرها كل من المبتدئ والمتوسط والمتقدم فى الفيجوال سى
void CAlwaysontopDlg::OnTop()
{
CRect rect;
GetWindowRect(rect);
UpdateData(TRUE);
if(m_top==TRUE)
::SetWindowPos(
m_hWnd , // handle to window
HWND_TOPMOST, // placement-order handle
rect.left, // horizontal position
rect.top, // vertical position
rect.Width(), // width
rect.Height(), // height
SWP_SHOWWINDOW // window-positioning options
);
else
::SetWindowPos(
m_hWnd , // handle to window
HWND_NOTOPMOST, // placement-order handle
rect.left, // horizontal position
rect.top, // vertical position
rect.Width(), // width
rect.Height(), // height
SWP_SHOWWINDOW // window-positioning options
);
}
ففى الحالة الأولى يجعل النافذة دائما فى الأعلى (حالة وجود علامة الصح امام الأداة)
وألا فى الحالة الثانية يعود للحالة الطبيعية حالة أن أى برنامج يفتح بعد برنامجنا يكون هو الأعلى (حالة عدم وجود علامة الصح امام الأداة)
والآن لننفذ البرنامج
ملاحظة
يوجد حالتين لدينا عند تنفيذ البرنامج
الأولى وهى البدائية بالنسبة لبرنامج الفيجوال سى وهى حالة Debug وهو أن الفيجوال سى يعتبر ملف ال EXE أو التنفيذى تحت الأختبار لذلك من مشاكله انه لو نقل هذا البرنامج الى جهاز لا يوجد عليه الفيجوال سى لن يعمل لذلك عندما تتاكد من أنتهاء البرنامج أو من الأن يجب عليك التحول الى حالة ال Releaseعن طريق
من قائمة Build اختار Set Active Configuration ستظهر لك نافذة Set Active Project Configuration أختار من قائمة Project Configuration الأختيار Alwaysontop - Win32Release ثم أضغط على Ok

الشكل(23)

الشكل(24)
والأن الى تنفيذ البرنامج
لتنفيذ البرنامج أما أن تضغط على مفتاحى Ctrl+F5 من على لوحة المفاتيح أو أنقر على رمز ! من على Build Mini Bar من على ال ToolBar او من قائمة Build أختار Execute Alwaysontop.exe أنظر الأشكال

الشكل(25)

الشكل(26)
وبهذا نكون قد حصلنا على برنامجنا يمكنك الأستفاده من هذه الخاصية Always on top فى برامجك
ملاحظة نهائية
أدرجنا تعريف المتغيير CRect rect; داخل ملف AlwaysontopDlg.cpp وهذا عادى ولكن بعض الأراء تقول أن ملفات الرأس أو Header files فى بيئة السى عموما تعتبر للمتغيرات وملفات CPP للدوال ولكن لا مانع من أضافة المتغييرات داخل ملفات CPP ولو أردنا وضع المتغير داخل ملف الرأس اولا يجب مسح هذا المتغير من ملف CPP ثم أفتح الملف AlwaysontopDlg.h أنظر طريقة الوصول الى AlwaysontopDlg.cpp سابقا ولكن بدلا من الدخول على Source files سندخل على Header files ثم أبحث عن كلمة Public:
Public:
CRect rect;
CAlwaysontopDlg(CWnd* pParent = NULL); // standard constructor
كما هو موضح بالشكل

الشكل(27)
وفى النهاية اتمنى من الله ان أكون قد وفقت فى الشرح