نصائح مفيدة

كيفية إنشاء نافذة (تطبيق)

Pin
Send
Share
Send
Send


  • - مترجم
  • - Windows Platform SDK.

تسجيل فئة النافذة المراد إنشاؤها ، إذا لزم الأمر. استدعاء وظائف API RegisterClass ، RegisterClassEx أو استخدام وظيفة المقابلة للإطار المطبق.

تأخذ الدالتان RegisterClass و RegisterClassEx مؤشرات إلى بنيات من النوع WNDCLASS و WNDCLASSEX ، على التوالي ، كمعلمة واحدة. يمكن استخدام قيمة الإرجاع من النوع ATOM بدلاً من اسم الفئة عند إنشاء نافذة. في حالة فشل استدعاء الوظيفة ، سيتم إرجاع القيمة 0.

قم بإنشاء مثيل لهيكل من النوع WNDCLASS أو WNDCLASSEX. املأ جميع الحقول المطلوبة. على وجه الخصوص ، يجب وضع القيم الصحيحة في:

- cbSize - حجم البنية بالبايت ،
- النمط - مجموعة من أنماط فئة النافذة ،
- lpfnWndProc - مؤشر إلى إجراء النافذة ،
- مقبض hInstance إلى الوحدة النمطية التي تم تسجيل فئة النافذة فيها ،
- lpszClassName هو الاسم الرمزي للفئة.

قد تحتوي الحقول المتبقية على قيم خالية. استدعاء وظيفة لتسجيل فئة النافذة. تحقق النتيجة التي تم إرجاعها.

إنشاء نافذة ويندوز. استخدم وظائف CreateWindow أو CreateWindowEx API أو أساليب المجمّع المقابلة لكائنات الفئة الخاصة بالإطار أو المكتبة المستخدمة. النموذج الأولي للدالة CreateWindowEx كالتالي:

HWND CreateWindowEx (
DWORD dwExStyle ،
LPCTSTR lpClassName ،
LPCTSTR lpWindowName ،
DWORD dwStyle ،
int x ،
كثافة العمليات ذ
عرض n ،
كثافة العمليات
HWND hWndParent ،
HMENU hMenu ،
صدق hInstance ،
LPVOID lpParam
),

تختلف الدالة CreateWindow عن CreateWindowEx فقط في حالة عدم وجود المعلمة dwExStyle.

قم بإجراء مكالمة إلى CreateWindow أو CreateWindowEx. تمرير اسم أو قيمة نوع ATOM لفئة النافذة المعرفة في الخطوة الأولى أو الثانية كمعلمة lpClassName. يمكن أن تكون المعلمات x و y و nWidth و nHeight إحداثيات وأبعاد الإطار الذي تم إنشاؤه. يتم تمرير المؤشر إلى الإطار الأصل (إن وجد) من خلال hWndParent.

حفظ وتحليل القيمة التي يتم إرجاعها بواسطة الدالتين CreateWindow أو CreateWindowEx. إذا نجحت ، فإنها ستعيد المؤشر إلى النافذة الجديدة ؛ وإذا فشلت ، فسوف تُرجع NULL.

المعرفة اللازمة:

عند إنشاء هذا البرنامج ، سننظر في المبادئ الأساسية لإنشاء تطبيقات النوافذ في C #، بالإضافة إلى أساليب تحقيق أي أهداف نهائية معهم: في حالتنا ، هذه نافذة هروب مضحكة.

إنشاء مشروع جديد ، تثبيت التطبيق كنوع القالب أشكال ويندوزكما هو مبين في الشكل 1:
الشكل 1. إنشاء مشروع جديد.
اسم المشروع RandWindow واضغط على الزر حسنا.

نافذة العمل مرض التصلب العصبي المتعدد البصرية ستوديو يحتوي على النوافذ المساعدة التالية.
الشكل 2. النوافذ المساعدة.
في الشكل ، الأرقام المميزة:

  1. النافذة الأدوات (لوحة التحكم) - يمكنك وضع عناصر التحكم في النموذج الذي تم إنشاؤه.
  2. النافذة مستكشف الحلول (مستكشف الحلول) - هنا يمكنك رؤية العقد التالية: خصائص - إعدادات المشروع ، الروابط (الروابط) - المكتبات المتصلة بالمشروع ، وكذلك الملفات المصدر التي تم إنشاؤها والمتصلة بالمشروع (مع الامتداد .cs) والنماذج المرتبطة بالمشروع (على سبيل المثال ، Form1).
  3. النافذة عرض الطبقة (نافذة الفصل) - هنا جميع الفئات التي تم إنشاؤها في البرنامج.
  4. النافذة خصائص (الخصائص) - من خلال تحديد أي عنصر تحكم أو حتى نموذج ، يمكنك رؤية جميع المعلمات لهذا الكائن ، وكذلك تغيير القيم الافتراضية فيها.

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

إضافة عناصر تحكم جديدة إلى النموذج

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

للقيام بذلك ، اسحب عنصر النافذة المطلوب من نافذة الأداة (مربع الأدوات).

نافذة لدينا سوف تحتاج 2 عنصر من حقل الإدخال ، حيث سنقوم بعرض إحداثيات مؤشر الماوس ، والتي سوف تسهل فهمنا للبرنامج.

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

امتداد النافذة فارغة قليلا. إذا نقرت بزر الماوس الأيمن فوقه ، فستظهر قائمة السياق. في ذلك ، انقر على عنصر الملكية ، وبعد ذلك يمكنك دراسة مختلف المعلمات من النافذة التي يمكنك تغييرها. يوضح الشكل 3 أكثر الخصائص الضرورية (عادة):
الشكل 3. خصائص نافذة (نموذج) متنوعة في C # .NET.
قم بتمديد النافذة فارغة قليلاً وأضف جميع العناصر الضرورية. في الشكل 4 ، يمكنك رؤيتها في النافذة مربع الأدوات:
الشكل 4. اسحب وإفلات العناصر الضرورية من Toolbox على النموذج الذي تم إنشاؤه.

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

سوف تظهر الفراغ الناتج من نافذة البرنامج على النحو التالي.
الشكل 7. سيبدو النموذج كما يلي.

الجزء الفني من البرنامج

  1. أولاً ، سنقوم بإضافة معالج أحداث الماوس وتنفيذ إخراج إحداثياته س و ذ في اثنين من مجالات المدخلات التي تم إنشاؤها.
  2. بعد ذلك ، سننشئ معالجات الوظائف للنقر على كل مفتاح من مفاتيح الماوس (لا يزال بإمكان المستخدمين الذين يعملون بجد الوصول إلى "نعم بالطبع!»).
  3. بعد ذلك ، سنضيف رمزًا ينفذ حركة نافذة عشوائية في حالة اقتراب المؤشر من "نعم بالطبع!».

تحديد حركة مؤشر الماوس فوق شكل

انقر مباشرة على جزء النموذج من التطبيق (NOT على واحد من العناصر).

انتقل الآن إلى خصائص النموذج بنقرة واحدة -> قائمة السياق خصائص.

أنت الآن بحاجة إلى الانتقال إلى قائمة الأحداث المحتملة التي يمكن أن تتلقاها هذه النافذة. للقيام بذلك ، انقر فوق "حدث"(الأحداث) ، كما هو مبين في الشكل 8:
الشكل 8. انتقل إلى قائمة الأحداث المحتملة.
عندما يقوم المستخدم بتحريك الماوس فوق نافذتنا ، يرسل نظام التشغيل رسالة إلى البرنامج مع الإحداثيات الحالية للمؤشر. نحن بحاجة لهم.

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


هذه الوظيفة التي تعالج حدث تحريك مؤشر الماوس فوق النموذج 2 المعلمة: كائن المرسل والمثيل فئة MouseEventsArgsيحتوي على معلومات حول إحداثيات مؤشر الماوس وغيرها من الخصائص الحالية.

textBox1 و textBox2 هذه هي الحالات الطبقية النصالتي تدير عناصر حقل الإدخال لدينا.

عضو بيانات مثيل نص يسمح لك بتعيين نص في هذه الحقول.

وبالتالي ، إذا كنت الآن ترجمة البرنامج (F5) ، عند تحريك مؤشر الماوس فوق شكل النافذة ، سنرى إحداثيات المؤشر (داخل النموذج) ، والتي سوف تتغير باستمرار.

عاد الآن إلى الفراغ من شكلنا. للقيام بذلك ، انقر فوق علامة التبويب المقابلة (Form1.cs [مُنشئ])كما هو مبين في الشكل 10:
الشكل 10. الانتقال إلى مصمم النموذج C #.
انقر نقرًا مزدوجًا على الزر الأول: استوديو البصرية سيضيف رمز معالجة هذا الزر تلقائيًا عند الضغط عليه.

أضف سطور الكود التالية:


عد الآن إلى المصمم وأضف زرًا ثانيًا ، أيضًا بالنقر فوقه نقرًا مزدوجًا.

سوف يحتوي على الكود التالي:


كما ترون ، لدينا هنا رمزًا معقدًا قليلاً لاستدعاء مربع الرسالة لشرح كيفية عمله بمزيد من التفاصيل. جميع المعلمات مرت على وظيفة عرض علق بها في شفرة المصدر.

الآن علينا فقط أن ندرك حركة النافذة في الوقت الذي يقترب فيه الماوس من الزر "نعم بالطبع».

للقيام بذلك ، نضيف الرمز إلى الوظيفة:

باطل خاصForm1_MouseMove (مرسل الكائن ، MouseEventArgs)

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

يمكننا فقط تتبع الرسالة حول تمرير الماوس فوق الزر ، لكنه يأتي مع تأخير ملحوظ ، وبالتالي يقوم المستخدم بالنقر فوق الزر "نعم" دون أي صعوبة ، لذلك نحن نحسب وصول المؤشر إلى المنطقة المحيطة بالزر.

سنحتاج أيضًا إلى الإعلان عن عدد قليل "عامل"المتغيرات التي سوف نستخدمها في المستقبل.

شرط المهمة

1. قم بتطوير مربع حوار يحتوي على زرين ، موافق وإلغاء.

التين. 1. النموذج المراد إنشاؤه

2. اتصل بمربع الحوار من نافذة التطبيق الرئيسية. اعرض الرسالة المقابلة في حالة الضغط على أحد المفتاحين في مربع الحوار: OK (موافق) و Cancel (إلغاء).

2. إنشاء مشروع C ++ باستخدام قالب تطبيق الحوار المستندة إلى الحوار

ويرد وصف مفصل لإنشاء مشروع باستخدام قالب تطبيق الحوار المستندة إلى الحوار هنا .

في نافذة إنشاء مشروع جديد ، قم بتعيين اسم التطبيق على أنه MFCApp. في المستقبل سوف نعلق هذا الاسم.

مجلد التطبيق في حالتنا (غير مهم):

عند إنشاء مشروع جديد في المعالج ، حدد تطبيق يستند إلى مربع حوار. يتم ترك جميع الإعدادات الأخرى بشكل افتراضي.

نتيجة لذلك ، سيتم إنشاء فئتين بأسماء CMFCAppApp و CMFCAppDlg.

نافذة MS Visual Studio بعد الإجراءات المكتملة ستبدو كما هو موضح في الشكل 2.

التين. 2. استمارة الطلب بعد إنشاء تطبيق الحوار

3. تغيير مظهر النموذج الرئيسي

دعنا نحذف زر موافق. وإعادة تسمية زر إلغاء للخروج.

لحذف الزر "موافق" ، يجب عليك أولاً تحديده ، ثم اضغط على مفتاح "الحذف".

وبالتالي ، نحذف العنصر الذي كتب فيه:

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

التين. 3. إعادة تسمية اسم الزر من "إلغاء" إلى "الخروج"

حتى الآن ، في نافذة لوحة Properties ، لدينا عنصرين:

  • IDD_MFCAPP_DIALOG - نافذة التطبيق الرئيسية ،
  • IDCANCEL - زر "إنهاء" (المعروف سابقًا باسم "إلغاء").

يمكنك تنزيل التطبيق للتنفيذ واختبار تشغيله.

نضع زرًا آخر في النموذج غير مرتبط بمعالجات الأحداث. يظهر عنصر IDC_BUTTON1 آخر في نافذة لوحة الخصائص.

سيكون نموذج الطلب كما هو مبين في الشكل 4.

التين. 4. إزالة زر غير مرتبط بمعالج الأحداث

يتم تغيير خاصية تسمية توضيحية لزر IDC_BUTTON1 إلى Form2. بعد النقر فوق هذا الزر ، سيتم استدعاء مربع حوار.

5. تشكيل فئة وموارد مربع الحوار

في MS Visual Studio ، يتم إنشاء موارد مربع الحوار تلقائيًا بعد إنشاء فئة نافذة. وبالتالي ، من خلال إنشاء فئة نافذة ، نقوم تلقائيًا بإنشاء مورد نافذة.

للعمل مع الفئات ، يتم استخدام معالج الفصل. للاتصال بمعالج Class ، انقر بزر الماوس الأيمن وحدد أمر "Class Wizard ..." في قائمة السياق (الشكل 5).

التين. 5. استدعاء "معالج Class ..." لإنشاء مربع حوار للفئة والموارد

نتيجة لذلك ، سيتم فتح نافذة ، والتي تظهر في الشكل 6.

التين. 6. نافذة "معالج فئة MFC"

تحتوي النافذة على الحقول التالية:

1. حقل "المشروع:" - المشاريع الموجودة في الحل (الحل).

2. يشير حقل "اسم الفصل:" إلى الفئات المتاحة في المشروع. في حالتنا ، هناك ثلاثة فصول بأسماء:

  • CMFCAppApp - فئة التطبيق ككل ،
  • CMFCAppDlg - فئة مربع حوار التطبيق ،
  • CAboutDlg هو فئة مربع الحوار حول الذي تم إنشاؤه عند إنشاء AppWizard المشروع.

3. يشير حقل "الفئة الأساسية:" إلى الفئة الأساسية التي يتم من خلالها عرض الفئة التي يتم عرضها في "اسم الفئة:".

4. يُعرّف حقل "المورد:" اسم المورد الذي يتوافق مع الفئة من حقل "اسم الفئة:".

5. يعرّف حقل "إعلان الفصل:" اسم ملف الرأس للفئة ، والذي يتم عرضه في حقل "اسم الفصل:".

6. يعرّف الحقل "تنفيذ الفصل": اسم الملف الذي يتم فيه تنفيذ وظائف الفئة ، والذي يتم عرضه في الحقل "اسم الفصل:".

تحتوي النافذة أيضًا على خمس علامات تبويب ، والتي تصف فئة من فئة "اسم الفصل الدراسي":

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

لإضافة فصل جديد ، نسمي الأمر إضافة فئة.

التين. 7. الأمر لإضافة فئة جديدة

نتيجة لذلك ، يتم فتح نافذة "معالج إضافة فئة MFC" ، حيث نقوم بتعيين الحقول على القيم ، كما هو موضح في الشكل 8. لتعيين الحقول ، فقط اكتب "CForm2" في حقل "اسم الفئة:". سيتم ملء جميع الحقول الأخرى تلقائيًا باستثناء حقل "الفئة الأساسية:".

في الحقل "Base> CDialog.

يتم تعيين اسم المورد كـ IDD_FORM2.

تتم تسمية ملف الرأس وملف تطبيق الفصل "Form2.h" و "Form2.cpp".

التين. 8. إنشاء فئة جديدة CForm2 ومورد IDD_FORM2 ، والتي تستند إلى CDialog للفئة

انقر فوق "إنهاء". في النافذة السابقة ، يمكنك رؤية أنه تمت إضافة فئة CForm2 إلى الفئات الثلاثة السابقة.

مرة أخرى انقر على "موافق".

6. برنامج MS Visual Studio ولوحة Solution Explorer

بعد الإجراءات المنجزة ، تظهر نافذة لوحة Solution Explorer كما هو موضح في الشكل 9.

التين. 9. نافذة مستكشف الحلول

كما يتضح من الشكل 9 ، ظهرت الملفات "Form2.h" و "Form2.cpp" في قائمة ملفات الرأس. وفقًا لذلك ، هذه هي ملفات الرأس والتنفيذ لفئة CForm2 المشكلة حديثًا.

7. استدعاء مربع الحوار للفئة CForm2 كمورد

لبدء تشكيل مربع حوار جديد (فئة CForm2) ، تحتاج إلى تسميته كمورد. للقيام بذلك ، في Solution Explorer ، انقر نقرًا مزدوجًا على ملف "MFCApp.rc" من علامة التبويب "الموارد".

التين. 10. استدعاء قائمة أسماء موارد التطبيق

لدينا قائمة بأسماء الموارد المتاحة:

  • IDD_ABOUTBOX - مورد لمربع الحوار حول ،
  • IDD_FORM2 - مورد النافذة التي تم إنشاؤها حديثًا ،
  • IDD_MFC_APP_DIALOG - مورد نافذة التطبيق الرئيسية.

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

التين. 11. نافذة الفئة CForm2 ، التي يتم توريثها من فئة CDialog

يمكنك تغيير حجم النموذج ووضع زري "موافق" و "إلغاء".

8. برمجة حدث النقر على زر "Form2" في نافذة التطبيق الرئيسية

باستخدام "Solution Explorer" وملف المورد "MFCApp.rc" (انظر ص 7) ، ننتقل إلى مورد IDD_MFCAPP_DIALOG لإطار التطبيق الرئيسي.

التين. 12. نافذة التطبيق الرئيسية

في نافذة "الخصائص" ، حدد الزر بمعرّف IDC_BUTTON1. ثم انتقل إلى "التحكم في الأحداث" إدراج.

التين. 13. قائمة الأحداث من علامة التبويب أحداث التحكم لعنصر التحكم IDC_BUTTON1

في قائمة الأحداث ، نجد حدثًا يحمل الاسم BN_CLICKED. ثم حدد الزر لتحديد القائمة من أعلى لأسفل وحدد "OnBnClickedButton1" في القائمة.

التين. 14. تحديد الحدث BN_CLICKED واستدعاء معالج الأحداث OnBnClickedButton1

نتيجة لذلك ، يتم فتح نافذة ملف "MFCAppDlg.cpp" مع جزء التعليمات البرمجية المحدد لمعالج الأحداث OnBnClickedButton1.

بين قوسين <> تحتاج إلى إدراج رمز معالجة الحدث الخاص بك.

رمز البرنامج الخاص بوظيفة معالجة حدث النقر على زر IDC_BUTTON1 هو كما يلي:

الآن يمكنك تشغيل التطبيق للتنفيذ واختبار تشغيله.

شاهد الفيديو: واجهة المستخدمين تعلم اكسس Learn Microsoft Access (كانون الثاني 2021).

Pin
Send
Share
Send
Send