معهد دعم اتش فى اى بى اس لحلول الويب - Powered by vBulletin


 
 
النتائج 1 إلى 2 من 2

الموضوع: جعل البرنامج Always on top برمجيا بالفيجوال سى 6

  1. #1
    المشرف العام
    الصورة الرمزية HVIPS1


    تاريخ التسجيل: Jun 2011
    رقم العضوية: 3
    الدولة: eygpt
    المشاركات: 2,778
    HVIPS1 غير متواجد حالياً

    Arrow جعل البرنامج Always on top برمجيا بالفيجوال سى 6


    بسم الله الرحمن الرحيم




    هذا الدرس سنتعلم فيه كيفية عمل الDialogBox أو مشروعنا من نوع MFC Application Dialog base دائما فى المقدمة أو Always in top .


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


    ولنكف عن الكلام ولنبدأ الأن.


    ملحوظة


    ليعذرنى من هو متمكن من لغة الفيجوال سى من اننى سأشرح بالتفصيل لمن هو مازال مبتدئ ولكل من هو متمكن يمرر الخطوات التى يعرفها ويكمل الأجزاء التى يجدها جديده بالنسبة له




    أولا قم بتشغيل بيئة الفيجوال سى من قائمة Start ثم Programs (فى ويندوز مى او 98 ) أو AllPrograms (فى ويندوز أكس بى) ومنها أختار Microsoft Visual Studio 6.0 ومنها Microsoft Visual C++ 6.0


    وسيبدا البرنامج فى العمل حتى تحصل على بيئة الفيجوال سى كما بهذا الشكل




    نقره لتكبير أو تصغير الصورة ونقرتين لعرض الصورة في صفحة مستقلة بحجمها الطبيعي


    شكل(1)




    من قائمة File أختار New (أو أضغط Ctrl+N ) لتبدأ مشروع جديد.




    نقره لتكبير أو تصغير الصورة ونقرتين لعرض الصورة في صفحة مستقلة بحجمها الطبيعي


    شكل (2)




    سيفتح لك New Projects من القئمة التى فى اليسار أختار MFC AppWizard(EXE) وبداخل مربع الكتابة أسفل Project nameفى اليمين أكتب أسم المشروع (بالطبع اى أسم يحلو لك ولكن سأفترض انه Alwaysontop)




    ملحوظة


    يوجد أسفل اسم المشروع خانة لتحديد مكان تخزين المشروع Location حيث ان بيئة الفيجوال سى تحفظ المشروع فى بداية أنشائه وأى تطور فيه أو تحديث يحدث أما ان تحفظه من قائمة File ثم Save أو فى حالة عمل Buildسيحفظ تلقائى




    بعد ان البيانات هنا نضغط على زر OK


    لنبدأ مع المعالج فى تكوين البرنامج كل ما عليك فعله هو اختيار الأشياء التى تريد وضعها فى البرنامج كما سنرى أو يمكنك اختيار Finishلترك أعدادات البرنامج كما هى


    ولكن دعنا نمشى خطوة خطوة




    نقره لتكبير أو تصغير الصورة ونقرتين لعرض الصورة في صفحة مستقلة بحجمها الطبيعي


    شكل (3)




    فى الخطوة الأولى


    سيسألك المعالج عن نوع البرنامج التى تريد أنشائه


    ويعطيك ثلاث اختيارات


    أما Single document اى برنامج ذو وثيقة واحدة مثل برنامج NotePad فى الويندوز والتى لا يسمح بفتح أكثر من وثيقة فى البرنامج الواحد ولكن يمكنك فتح البرنامج أكثر من مرة كل مرة بوثيقة


    أو الأختيار الثانى Multiple documents أى برنامج متعدد الوثائق كبرنامج MS Word والتى يسمح لك فتح اكثر من وثيقة فى البرنامج الواحد


    أما الأختيار الثالث وهو الأختيار التى سنعمل عليه والتى يعتبر المفضل بالنسبة لى وبالنسبة لمعظم مستخدمى هذه اللغة لبساطته وممكن أيضا التحكم فيه بسهولة من حيث الشكل والخصائص وهو Dialog based أو مربعات الحوار وهذه مثل النافذة التى تحمل الخصائص فى أى برنامج


    كما ذكرت أننا سنختار الأختيار الثالث


    ويوجد أيضا فى هذه النافذة سؤال عن نوع اللغة التى ستستخدمها فى مصدر البرنامج سنتركها الأنجليزيه وسأشرح فيما بعد كيفية التحويل الى اللغة العربية لتعمل بلا أخطاء على اى جهاز


    سنضغط على Next




    نقره لتكبير أو تصغير الصورة ونقرتين لعرض الصورة في صفحة مستقلة بحجمها الطبيعي


    شكل(4)




    فى الخطوة الثانية سيسألك عن المميزات التى تريد أضافتها فى البرنامج أتركها كما هى


    ولكن يمكنك أضافة Context-sensitive Help وهوملف المساعدة للبرنامج التى ستكتبه ولكن لن أتطرق أيها الأن




    ملاحظة


    الأختيار About Box هو المسئول عن تكوين نافذة لتوضيح كاتب البرنامج سواء كان فرد او شركة ألخ


    فى أسفل النافذة يوجد Please enter a title for your dialog وهى المسئولة عن الأسم التى سيظهر فى شريط العنوان للبرنامج كذلك فى شريط العنوان للويندوز


    يمكنك تغييرها الى Always On Top كذلك يمكنك تغييرها من داخل البرنامج أثناء برمجته


    والأن أضغط على Next أو Finish بالطبع لو أردت أنها المعالج بهذه الخصائص والدخول الى كتابة الكود




    نقره لتكبير أو تصغير الصورة ونقرتين لعرض الصورة في صفحة مستقلة بحجمها الطبيعي


    شكل(5)




    فى هذه الخطوة سيخبرك انك تستعمل مكتبة MFC Standard وسيسألك عن هل تريد توليد تعليقات فى الملفات


    والأن الى أهم سؤال فى هذه النافذة وهو ماذا تريد أستخدامه فى مكتبة MFC Library


    وفيها أختياران


    الأول As ashared Dll وهو الأختيار البدائى وهو ما سنختاره ومعناه أن ملفات الDll المشتركه بين البرنامج ونظام التشغيل ستترك لنظام التشغيل أى انها موجوده فيه ولا تخف فى موجوده فى جميع انظمة التشغيل وميزته انه سيعطى لك برنامج حجمه صغير بالمقارنه بالأختيار الأخر


    الثانى As statically linked library وهو ربط الملفات مع البرنامج وبالطبع سيجعل حجم البرنامج كبير


    والأن أضغط على Next




    نقره لتكبير أو تصغير الصورة ونقرتين لعرض الصورة في صفحة مستقلة بحجمها الطبيعي


    شكل(6)




    والأن مع أخر خطوة والتى سيبين لك المعالج عن الأصناف التى ستستخدم داخل البرنامج ولن تجد ألا Finish ولن تجد Next أضغط على Finish




    نقره لتكبير أو تصغير الصورة ونقرتين لعرض الصورة في صفحة مستقلة بحجمها الطبيعي


    شكل(7)




    والتى سيعطى لك معلومات عن مشروعك بناء على الأختيارات التى أخترناها أضغط على Ok للدخول على بيئة التصميم




    نقره لتكبير أو تصغير الصورة ونقرتين لعرض الصورة في صفحة مستقلة بحجمها الطبيعي


    شكل(8)




    أضغط نقره يسرى على TODO: Place dialog controls here ثم أضغط على زرDelete فى لوحة المفاتيح لحذف هذه الجملة والتى تعتبر كملاحظة لا نحتاجها داخل البرنامج


    ولشرح بيئة التصميم


  2. #2
    المشرف العام
    الصورة الرمزية HVIPS1


    تاريخ التسجيل: Jun 2011
    رقم العضوية: 3
    الدولة: eygpt
    المشاركات: 2,778
    HVIPS1 غير متواجد حالياً

    رد: جعل البرنامج Always on top برمجيا بالفيجوال سى 6


    فى يمين الشاشة يوجد شريط أدوات التصميم من أزار و صناديق اختيار .... ألخ وفى المنتصف منطقة العمل والتى سنصممها وهى النافذه التى سيظهر برنامجك بها فى النهاية أما على يسار الشاشة يوجد ثلاث أختيارات ResourceView المسئولة عن أظهار مصادرك من مربع حوار وصور ألخ و ClassView والتى ستظهر الأصناف التى ستعمل بها أو للتبسيط الدوال المستعملة داخل البرنامج وFileViewوالتى ستظهر لك ملفات الأكواد داخل برنامجك




    والأن نقوم بأضافة Check Box الى منطقة العمل ونحدد حجمه ومكانه كما يمكننا تحديد حجم منطقة العمل كما هو موضح بالأشكال الأتية:




    نقره لتكبير أو تصغير الصورة ونقرتين لعرض الصورة في صفحة مستقلة بحجمها الطبيعي


    شكل(9)




    نقره لتكبير أو تصغير الصورة ونقرتين لعرض الصورة في صفحة مستقلة بحجمها الطبيعي


    شكل(10)




    وسنجد أن برنامجنا لا يقرأ اللغة العربية ولكنه سيظهر لك كلمات غريبه كهذه مثلا " " ÏÇÆãÇ ÈÇáÃÚáì عند كتابة أى كلمة عربية ولحل هذه المشكلة


    تاكد من أنك على ResourceView ثم أنقر على Alwaysontop resources نقره مزدوجة ثم على Dialog أيضا نقره مزدوجة ثم أنقر كليك يمين على IDD_ALWAYSONTOP_DIALOG وأختار Properties ستفتح لك نافذةDialog Properties ومن Language أختار اللغة Neutral(Sys. Default) كى يقرأ اللغة العربية ثم أضغط Enter من لوحة المفاتيح




    نقره لتكبير أو تصغير الصورة ونقرتين لعرض الصورة في صفحة مستقلة بحجمها الطبيعي


    شكل(11)




    نقره لتكبير أو تصغير الصورة ونقرتين لعرض الصورة في صفحة مستقلة بحجمها الطبيعي


    شكل(12)


    نقوم بالنقر كليك يمين على الCheck Boxونختار من القائمة التى ستظهر لنا Properties


    سيظهر لنا مربع Check Box Properties وفيه من ID نغير الأسم الى IDC_TOP ومن Caption نغير العنوان الى دائما بالأعلى




    نقره لتكبير أو تصغير الصورة ونقرتين لعرض الصورة في صفحة مستقلة بحجمها الطبيعي


    شكل(13)




    نقره لتكبير أو تصغير الصورة ونقرتين لعرض الصورة في صفحة مستقلة بحجمها الطبيعي


    شكل(14)




    والأن لماذا أخترنا 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)




    وفى النهاية اتمنى من الله ان أكون قد وفقت فى الش

 

ضوابط المشاركة

  • لا تستطيع إضافة مواضيع جديدة
  • لا تستطيع الرد على المواضيع
  • لا تستطيع إرفاق ملفات
  • لا تستطيع تعديل مشاركاتك
  •