الدرس الثاني من البرمجة في بيئة الويندوز - Intro to Win32 programming in C++

تم تحميل الصفحة في 1,1191576 ثانية
الدرس الثاني من البرمجة في بيئة الويندوز - Intro to Win32 programming in C++

Mariio

.:: مُراقب أقسام البرمجة ::.
rankrankrankrankrankrank
طاقم الإدارة
إنضم
1 مايو 2007
المشاركات
4,825
الإعجابات
4,299
النقاط
133
الإقامة
USA




اللهم لك الحمد حمدًا طيّبًا كثيرًا مُباركًا فيه؛
ملء السّماوات وملء الأرض وما بينهما، وملء ما شيئت من شيء بعدهما.


*. أرحب بكم إخواني وأخواتي أعضاء منتدى نقطة التطوير .*

*. أتمنى أن تكونوا في تمام الصحة والعافية.*




الدرس الثاني من البرمجة في بيئة الويندوز - Intro to Win32 programming in C++

---------------------------------------------------------------------------------------------------------------
في الدرس السابق تعلمنا ما معنى API والمتغيرات تكون مختلفه بلاسماء وتسمى Hungarian Notation

في درس اليوم سوف نتعلم ماهيه النوافذ والمقابض
اولا يجب ان تعرف ان مصدر دوال الويندوز هوه نفسه موقع مايكروسوفت Technical documentation, API, and code examples



What Is a Window?



تسمية Windows يعود في الحقيقه الى كلمه Window او نافذه كما في الصوره



هذا النوع من النوافذ يسمى application window or main window او النافذه الرئيسيه

وهذا نوع اخر من النوافذ


نعم سوف تلاحظ ان هذا button او زر وتضغط عليه حتى يتم تنفيذ امر ما
لكن بلحقيقه هذا ايضا نافذه


كما تلاحظ يوجد مختلف انواع من النوافذ لهذا من الان عندما تبرمج للويندوز وتسمع او تقراء كلمه نافذه window
فعليك التفكير هكذا
  • (تكون في جزء معين من الشاشه) Occupies a certain portion of the screen.
  • (تكون ظاهرة او مخفيه في اي لحظة) May or may not be visible at a given moment.
  • (النوافذ تعرف كيف ترسم نفسها Knows how to draw itself.
  • (ترد على المستخدم او النظام) Responds to events from the user or the perating system


Parent Windows and Owner Windows

في النوافذ هناك مسميات قد تكون غريبه لك عند قرائتها لاول مره لكن بعد فهم التسميات سوف تلاحظ لماذا سميت هكذا
يوجد
اباء Parents واولاد Child كما تلاحظ في الصوره





النافذه الرئيسيه تسمى Parent او اب
وبقية النوافذ داخلها تسمى ابناء Child

الابناء دائما تكون داخل الاباء وتكون بموقع معين داخلها

ايضا يوجد نوافذ تابعه لنوافذ اخرى او owned
مثلا رسائل الخطاء او الاشعارات تكون تابعه لنوافذ اخرى مثل ما في الصوره في الاعلى



Window Handles


المقابض عباره عن ارقام تحملها النوافذ فمثلا نريد الوصول الى نافذه معينه وهناك مئات النوافذ فكيف سوف نعرف اي نافذه نريد وكيف نفرق بينهم
هنا جائت فكره المقابض فكل مقبض هوه عباره عن ارقام مسجله داخل النظام ولهذه المقابض متغير معين ويسمى HWND

HWND وتقراء "aitch-wind."


Screen and Window Coordinates

احداثيات الشاشعه تبداء من الزاويه اليسرى في الاعلى وتكون 0,0
ونحن نقوم بتحديد عندما نشغل البرنامج في اي مكان بلشاشه يعمل

ونفس الشيء داخل النوافذ عندما نبرمج ازرار الموقع او الاحداثيات نقوم باختيارها حسب منا نريد كما موضع بلصوره في الاسفل








WinMain: The Application Entry Point




لكل برنامج هناك نقطه ادخال يبداء منها البرنامج مثلا في السي بلس بلس تكون فونكشن Main اما في نظام ويندوز تكون اما WinMain او wWinMain



C++:
int WINAPI wWinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, PWSTR pCmdLine, int nCmdShow);

نفطة الادخال في ويندوز تاخذ 4 براميترات


  • hInstance وهيه مقبض خاص بـ instance وهذا النوع يكون مطلوب في بعض النوافذ حتى يحدد اي ايقونه يحمل مع بداء البرنامج
  • hPrevInstance في وقتنا الحالي لا معنى له لانه كان مطلوب في نظام 16Bit اما اليوم فيكون مصفر
  • pCmdLine تحمل قيم CMD وتكون Unicode string
  • nCmdShow هوه علم او Flag يقوم باخبار البرنامج في حال يجب ان يعمل صغير او كبير او طبيعي minimized, maximized, or shown normally

ايضا كما تلاحظ يوجد نوعين من نقاط الادخال WinMain او wWinMain
كما ذكرت في الدرس السابق w تكون تابعه لنظام Unicode وهذا النظام يدعم جميع الاحرف العالميه



هذا كود لبرنامج فارغ في بيئه ويندوز
C++:
INT WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance,
    PSTR lpCmdLine, INT nCmdShow)
{
    return 0;
}


الدرس السابق

الدرس الأول من البرمجة في بيئة الويندوز - Intro to Win32 programming in C++




جميع الحقوق محفوظه لنقطة التطوير
All rights reserved



*. [ ~ .. في أمان الله .. ~ ] .*


*. [ ~ .. Mariio.. ~ ] .*
 
التعديل الأخير:
إنضم
27 ديسمبر 2006
المشاركات
2,370
الإعجابات
1,516
النقاط
113
وعليكم السلام ورحمه الله

موضوع جميل جداً و مفيد جداً

اشكرك

ممكن تستعجل في طرح الدروس الثانية هههههههههه
 

MSCFC

.:: مُشرف أقسام التصميم ::.
rankrankrank
إنضم
12 نوفمبر 2016
المشاركات
939
الإعجابات
1,218
النقاط
121
الإقامة
D Z
الصراحة درس مفيد جدًا بالنسبة للجدد إلى وندوز تقنيًا
الصراحة بسبب إستعمالي لـVB6 أنا متعود على هذه المصطلحات
والصراحة كما يقولون
الصراحة راحة :°)
 

Mariio

.:: مُراقب أقسام البرمجة ::.
rankrankrankrankrankrank
طاقم الإدارة
إنضم
1 مايو 2007
المشاركات
4,825
الإعجابات
4,299
النقاط
133
الإقامة
USA
وعليكم السلام ورحمه الله

موضوع جميل جداً و مفيد جداً

اشكرك

ممكن تستعجل في طرح الدروس الثانية هههههههههه

احاول طرح اكبر عدد من الدروس بطريقه سهله للتعلم
لكن مشاغل الحياة والدراسه والعمل وكانت ايام امتحانات لهذا قل عدد الدروس
 

Mariio

.:: مُراقب أقسام البرمجة ::.
rankrankrankrankrankrank
طاقم الإدارة
إنضم
1 مايو 2007
المشاركات
4,825
الإعجابات
4,299
النقاط
133
الإقامة
USA
الصراحة درس مفيد جدًا بالنسبة للجدد إلى وندوز تقنيًا
الصراحة بسبب إستعمالي لـVB6 أنا متعود على هذه المصطلحات
والصراحة كما يقولون
الصراحة راحة :°)

نعم الفيجول بيسك من نفس الشركه لهذا الكثير من المصطلحات تكون نفسها
 
الإعجابات: MSCFC
إنضم
5 أغسطس 2011
المشاركات
505
الإعجابات
429
النقاط
63
الإقامة
0x400000
السلام عليكم
درس منتظره من زمان و الله
شرح مميز و مفيد جدا
عندي سؤال بسيط بخصوص الدرس : هل pCmdLine هي نفسها سطر الاوامر الذي برمجيا هو argv ام هو شيء آخر ؟
امتنى التوضيح و مشكور على الشرح الجميل
 
إنضم
11 أغسطس 2016
المشاركات
703
الإعجابات
614
النقاط
133
وعليكم السلام ورحمه الله
شرح ممتع ومتكامل وسلس
يعطيك العافيه
 

Mariio

.:: مُراقب أقسام البرمجة ::.
rankrankrankrankrankrank
طاقم الإدارة
إنضم
1 مايو 2007
المشاركات
4,825
الإعجابات
4,299
النقاط
133
الإقامة
USA
السلام عليكم
درس منتظره من زمان و الله
شرح مميز و مفيد جدا
عندي سؤال بسيط بخصوص الدرس : هل pCmdLine هي نفسها سطر الاوامر الذي برمجيا هو argv ام هو شيء آخر ؟
امتنى التوضيح و مشكور على الشرح الجميل

  • pCmdLine contains the command-line arguments as a Unicode string.
نعم هيه arguments
 
الإعجابات: MSF

الرّوسي

مشرف اقسام الجوال
إنضم
2 سبتمبر 2010
المشاركات
12,831
الإعجابات
9,695
النقاط
160
الإقامة
TUNISIE#
كود:
#include <stdio)h>
#include <stdlib.h>

int main{}

{
    int NBH,TH,S;
    float s ;
    prinftf ("Donnes NBH")
    scanf ("%i",&NBH);
    printf ( "Donnes TH")
    if {NBH<=39}
    {s=NBH*TH*1;}
    else
    {
        if (NBH<=44)
        {
        s=(39*TH*1)+(NBH-39)*TH*1,5;)
        else
        s=(39*TH*1)+(5*TH*1,5)+(NBH-44)*TH*2;
     }

    printf("salaire egal %f",s);
    return 0 ;
}
 

Mariio

.:: مُراقب أقسام البرمجة ::.
rankrankrankrankrankrank
طاقم الإدارة
إنضم
1 مايو 2007
المشاركات
4,825
الإعجابات
4,299
النقاط
133
الإقامة
USA
كود:
#include <stdio)h>
#include <stdlib.h>

int main{}

{
    int NBH,TH,S;
    float s ;
    prinftf ("Donnes NBH")
    scanf ("%i",&NBH);
    printf ( "Donnes TH")
    if {NBH<=39}
    {s=NBH*TH*1;}
    else
    {
        if (NBH<=44)
        {
        s=(39*TH*1)+(NBH-39)*TH*1,5;)
        else
        s=(39*TH*1)+(5*TH*1,5)+(NBH-44)*TH*2;
     }

    printf("salaire egal %f",s);
    return 0 ;
}

عندك مشاكل كثيره بلكود خصوصا الاقواس
السي حساسه جدا للحروف والاقواس
 

الرّوسي

مشرف اقسام الجوال
إنضم
2 سبتمبر 2010
المشاركات
12,831
الإعجابات
9,695
النقاط
160
الإقامة
TUNISIE#
عندك مشاكل كثيره بلكود خصوصا الاقواس
السي حساسه جدا للحروف والاقواس
ماريو أنا مبتدأ في هذه البرمجة مكن إحاطة ومساعدة منك إن أمكن ؟ ( تلك أول محاولة حولت البدأ بها )
 

Mariio

.:: مُراقب أقسام البرمجة ::.
rankrankrankrankrankrank
طاقم الإدارة
إنضم
1 مايو 2007
المشاركات
4,825
الإعجابات
4,299
النقاط
133
الإقامة
USA
ماريو أنا مبتدأ في هذه البرمجة مكن إحاطة ومساعدة منك إن أمكن ؟ ( تلك أول محاولة حولت البدأ بها )
حاول ان تكتب الاكواد بنفسك بدون نسخ ولصق
مثلا
C++:
#include <iostream>
الكثير يحاولون نسخ اشياء صغيره مثل هذه لهذا يصبح التعلم اصعب
حاول ان تكتب كلشيء بنفسك من الصفر كل مره تكتب برنامج بلسي

الحروف الصغيره دائما الاساسيه بلسي واذا كتبت حرف كبير سوف تضهر مشاكل بلاكواد

الاقواس والفواصل مهمه جداا وتضهر مشاكل كثيره
بعض الاحيان فاصله واحده تسبب مشاكل صعب حلها اذا لم تكن منتبه

المتغيرات دائما اعطيها اسم يختصر عملها مثلا لو تحسب المبلغ الكلي سوف تكتب int total


اول خطاء بلكود اللذي كتبته
C++:
#include <stdio)h>
يوجد قوس داخل الكلمه )
 

الرّوسي

مشرف اقسام الجوال
إنضم
2 سبتمبر 2010
المشاركات
12,831
الإعجابات
9,695
النقاط
160
الإقامة
TUNISIE#
حاول ان تكتب الاكواد بنفسك بدون نسخ ولصق
مثلا
C++:
#include <iostream>
الكثير يحاولون نسخ اشياء صغيره مثل هذه لهذا يصبح التعلم اصعب
حاول ان تكتب كلشيء بنفسك من الصفر كل مره تكتب برنامج بلسي

الحروف الصغيره دائما الاساسيه بلسي واذا كتبت حرف كبير سوف تضهر مشاكل بلاكواد

الاقواس والفواصل مهمه جداا وتضهر مشاكل كثيره
بعض الاحيان فاصله واحده تسبب مشاكل صعب حلها اذا لم تكن منتبه

المتغيرات دائما اعطيها اسم يختصر عملها مثلا لو تحسب المبلغ الكلي سوف تكتب int total


اول خطاء بلكود اللذي كتبته
C++:
#include <stdio)h>
يوجد قوس داخل الكلمه )
تمام ماريو هأخذ بنصيحتك هذه ، طيب ما أطول عليك فقط اعطيني مصدر أقدر أتعلم منه واطور به من نفسي أو حتى مصدر به أكواد وأنا اتمرن بكتابته ..
عندي مشكلة في عدم التركيز جيدا عند الكتابة لكن هحول أحسن من نفسي شكرا ...
 

Mariio

.:: مُراقب أقسام البرمجة ::.
rankrankrankrankrankrank
طاقم الإدارة
إنضم
1 مايو 2007
المشاركات
4,825
الإعجابات
4,299
النقاط
133
الإقامة
USA
تمام ماريو هأخذ بنصيحتك هذه ، طيب ما أطول عليك فقط اعطيني مصدر أقدر أتعلم منه واطور به من نفسي أو حتى مصدر به أكواد وأنا اتمرن بكتابته ..
عندي مشكلة في عدم التركيز جيدا عند الكتابة لكن هحول أحسن من نفسي شكرا ...
اول سؤالين تسئل نفسك هما ما هيه طريقه تعلمك ؟
تقراء الكتب او تشاهد فيديوات
ثاني سؤال هل تجيد الانجليزيه ؟
 

الرّوسي

مشرف اقسام الجوال
إنضم
2 سبتمبر 2010
المشاركات
12,831
الإعجابات
9,695
النقاط
160
الإقامة
TUNISIE#
اول سؤالين تسئل نفسك هما ما هيه طريقه تعلمك ؟
تقراء الكتب او تشاهد فيديوات
ثاني سؤال هل تجيد الانجليزيه ؟
ادرس في جامعة مختصة في الإعلامية ومن ضمن المواد هناك برمجة C .. لا زلات في بداية بها
نعم أجيدها نسبيا لست بالمحترف فيها ...
 

Mariio

.:: مُراقب أقسام البرمجة ::.
rankrankrankrankrankrank
طاقم الإدارة
إنضم
1 مايو 2007
المشاركات
4,825
الإعجابات
4,299
النقاط
133
الإقامة
USA
ادرس في جامعة مختصة في الإعلامية ومن ضمن المواد هناك برمجة C .. لا زلات في بداية بها
نعم أجيدها نسبيا لست بالمحترف فيها ...

لديه ايضا دوره بلسي
واحد من افضل الشروحات
 

الرّوسي

مشرف اقسام الجوال
إنضم
2 سبتمبر 2010
المشاركات
12,831
الإعجابات
9,695
النقاط
160
الإقامة
TUNISIE#

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


:9:
 

الأعضاء النشطين حاليآ الذين يشاهدون هذا الموضوع (1 عضو و 0 ضيف)

خيارات الاستايل

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

إرجاع خيارات الإستايل