رحيل المشاعر
06-20-2019, 10:33 PM
http://img.dev-point.com/imgcache/2013/10/88871.png
http://img.dev-point.com/imgcache/2013/10/88872.gif
اللهم لك الحمد حمدًا طيّبًا كثيرًا مُباركًا فيه؛
ملء السّماوات وملء الأرض وما بينهما، وملء ما شيئت من شيء بعدهما.
*. أرحب بكم إخواني وأخواتي أعضاء منتدى نقطة التطوير .*
*. أتمنى أن تكونوا في تمام الصحة والعافية.*
http://img.dev-point.com/imgcache/2013/10/88872.gif
الدرس الثاني من البرمجة في بيئة الويندوز - Intro to Win32 programming in C++
---------------------------------------------------------------------------------------------------------------
في الدرس السابق تعلمنا ما معنى API والمتغيرات تكون مختلفه بلاسماء وتسمى Hungarian Notation
في درس اليوم سوف نتعلم ماهيه النوافذ والمقابض
اولا يجب ان تعرف ان مصدر دوال الويندوز هوه نفسه موقع مايكروسوفت Technical documentation, API, and code examples
What Is a Window?
تسمية Windows يعود في الحقيقه الى كلمه Window او نافذه كما في الصوره
https://docs.microsoft.com/en-us/windows/desktop/LearnWin32/images/window01.png
هذا النوع من النوافذ يسمى application window or main window او النافذه الرئيسيه
وهذا نوع اخر من النوافذ
https://docs.microsoft.com/en-us/windows/desktop/LearnWin32/images/window02.png
نعم سوف تلاحظ ان هذا 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 كما تلاحظ في الصوره
https://docs.microsoft.com/en-us/windows/desktop/LearnWin32/images/window04.png
النافذه الرئيسيه تسمى Parent او اب
وبقية النوافذ داخلها تسمى ابناء Child
الابناء دائما تكون داخل الاباء وتكون بموقع معين داخلها
ايضا يوجد نوافذ تابعه لنوافذ اخرى او owned
مثلا رسائل الخطاء او الاشعارات تكون تابعه لنوافذ اخرى مثل ما في الصوره في الاعلى
Window Handles
المقابض عباره عن ارقام تحملها النوافذ فمثلا نريد الوصول الى نافذه معينه وهناك مئات النوافذ فكيف سوف نعرف اي نافذه نريد وكيف نفرق بينهم
هنا جائت فكره المقابض فكل مقبض هوه عباره عن ارقام مسجله داخل النظام ولهذه المقابض متغير معين ويسمى HWND
HWND وتقراء "aitch-wind."
Screen and Window Coordinates
احداثيات الشاشعه تبداء من الزاويه اليسرى في الاعلى وتكون 0,0
ونحن نقوم بتحديد عندما نشغل البرنامج في اي مكان بلشاشه يعمل
ونفس الشيء داخل النوافذ عندما نبرمج ازرار الموقع او الاحداثيات نقوم باختيارها حسب منا نريد كما موضع بلصوره في الاسفل
https://docs.microsoft.com/en-us/windows/desktop/LearnWin32/images/coordinates01.png
WinMain: The Application Entry Point
لكل برنامج هناك نقطه ادخال يبداء منها البرنامج مثلا في السي بلس بلس تكون فونكشن Main اما في نظام ويندوز تكون اما WinMain او wWinMain
C++:
?
1
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++:
? (https://www.dev-point.com/vb/threads/691670/#)
1
2
3
4
5
INT WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance,
PSTR lpCmdLine, INT nCmdShow)
{
return 0;
}
http://img.dev-point.com/imgcache/2013/10/88872.gif
http://img.dev-point.com/imgcache/2013/10/88872.gif
اللهم لك الحمد حمدًا طيّبًا كثيرًا مُباركًا فيه؛
ملء السّماوات وملء الأرض وما بينهما، وملء ما شيئت من شيء بعدهما.
*. أرحب بكم إخواني وأخواتي أعضاء منتدى نقطة التطوير .*
*. أتمنى أن تكونوا في تمام الصحة والعافية.*
http://img.dev-point.com/imgcache/2013/10/88872.gif
الدرس الثاني من البرمجة في بيئة الويندوز - Intro to Win32 programming in C++
---------------------------------------------------------------------------------------------------------------
في الدرس السابق تعلمنا ما معنى API والمتغيرات تكون مختلفه بلاسماء وتسمى Hungarian Notation
في درس اليوم سوف نتعلم ماهيه النوافذ والمقابض
اولا يجب ان تعرف ان مصدر دوال الويندوز هوه نفسه موقع مايكروسوفت Technical documentation, API, and code examples
What Is a Window?
تسمية Windows يعود في الحقيقه الى كلمه Window او نافذه كما في الصوره
https://docs.microsoft.com/en-us/windows/desktop/LearnWin32/images/window01.png
هذا النوع من النوافذ يسمى application window or main window او النافذه الرئيسيه
وهذا نوع اخر من النوافذ
https://docs.microsoft.com/en-us/windows/desktop/LearnWin32/images/window02.png
نعم سوف تلاحظ ان هذا 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 كما تلاحظ في الصوره
https://docs.microsoft.com/en-us/windows/desktop/LearnWin32/images/window04.png
النافذه الرئيسيه تسمى Parent او اب
وبقية النوافذ داخلها تسمى ابناء Child
الابناء دائما تكون داخل الاباء وتكون بموقع معين داخلها
ايضا يوجد نوافذ تابعه لنوافذ اخرى او owned
مثلا رسائل الخطاء او الاشعارات تكون تابعه لنوافذ اخرى مثل ما في الصوره في الاعلى
Window Handles
المقابض عباره عن ارقام تحملها النوافذ فمثلا نريد الوصول الى نافذه معينه وهناك مئات النوافذ فكيف سوف نعرف اي نافذه نريد وكيف نفرق بينهم
هنا جائت فكره المقابض فكل مقبض هوه عباره عن ارقام مسجله داخل النظام ولهذه المقابض متغير معين ويسمى HWND
HWND وتقراء "aitch-wind."
Screen and Window Coordinates
احداثيات الشاشعه تبداء من الزاويه اليسرى في الاعلى وتكون 0,0
ونحن نقوم بتحديد عندما نشغل البرنامج في اي مكان بلشاشه يعمل
ونفس الشيء داخل النوافذ عندما نبرمج ازرار الموقع او الاحداثيات نقوم باختيارها حسب منا نريد كما موضع بلصوره في الاسفل
https://docs.microsoft.com/en-us/windows/desktop/LearnWin32/images/coordinates01.png
WinMain: The Application Entry Point
لكل برنامج هناك نقطه ادخال يبداء منها البرنامج مثلا في السي بلس بلس تكون فونكشن Main اما في نظام ويندوز تكون اما WinMain او wWinMain
C++:
?
1
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++:
? (https://www.dev-point.com/vb/threads/691670/#)
1
2
3
4
5
INT WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance,
PSTR lpCmdLine, INT nCmdShow)
{
return 0;
}
http://img.dev-point.com/imgcache/2013/10/88872.gif