دروس
برمجة الويندوز باستخدام Win32 API function ( الدرس الثاني )

عقارية المدينة 6-12-1430هـ للاعلان جوال 0507445115 حراج سيارات 19-4-1431هـ
افضل و اقوى و احلى و اجمل موقع افلام و فيديو يوتيوب youtube على الاطلاق للاعلان جوال 0507445115 بنات الرياض سعوديات نسائي بناتي حريمي

تابع حالة الطقس في اكبر و اشهر مدن المملكة العربية السعودية | منتديات | مقاطع فيديو تحميل افلام موقع يوتيوب youtube العاب بنات hguhf fkhj | تحميل صور jpldg w,v | بلاك بيري | بنات السعودية | قصص بنات

احصائيات سريعة
اقسام على الموقع
دروس في أنظمة التشغيل | ماي سكيول - MySQL | لفيجوال بيسك - Visual Basic | المات لاب Matlab | اللينكس و اليونكس | الاسمبلي - ASSEMBLY | الاوتلوك - Outlook | البرمجة تحت اللنكس -Linux Programming | البرمجة تحت وندوز بواسطة دوال ال win API | البرمجة في بيئة الدوت نت .Net | التصمبم والرسوم | الدلفي - Delphi | الجافا - Java | السي - C | الصوت و الصورة | الوورد - Word | القسم العام للأوفيس | الكوبول - COBOL | control panel-ftp | اوراكل - Oracle | اكسل - Excel | تحميل الملفات | برامج متنوعة | برامج التصفح | برامج الحماية | برامج إنترنت | تعرّف على الويب | بوربوينت - Power Point | images | دروس : كمبيوتر وصيانة | دروس مجلة نيوك phpnuke | دروس مسنجر MSN - yahoo - Gmail | دروس منتديات vBulletin | دروس الجوالات والهواتف | دروس السي بنل cpanel | دروس اكسس access | دروس بيونت شوب برو - point shop pro | دروس برمجة php - mysql | دروس برامج منوعة software | دروس ثري دي ماكس 3D max | دروس تطوير المواقع والمنتديات | دروس جافا سكريبت JavaScript | دروس دريم ويفر DreamWeaver | دروس شبكات Networks | دروس سويش - swish | دروس فلاش - flash | دروس فلاش mx | دروس فى نظام الوندوز WINDOWS | دروس فىالباسكال - Pascal | دروس فيجوال بيسك Visual Basic | دروس فرونت بيج - frontpage | دروس فوتوشوب photoshop | دروس هكر hacker crack virus | سي ++ | سي شارب - #C | فيجوال سي ++ - ++ Visual C | قسم البرمجة العام | دروس فى لغة HTML
البحث في المواد

اكثر المحتويات زيارة
الدوال في الاكسل (14,836 مشاهده)
تعريف الفن التشكيلي: (14,801 مشاهده)
ربط قاعدة بيانات أكسس (MS Access) مع برنامج الفيجوال بيسك بطريقة(ODBC) (10,760 مشاهده)
دروس في الأوفيس الأكسس - Access0- (10,231 مشاهده)
أنواع العلاقات وطريقة الربط بين الجداول. (10,165 مشاهده)
شرح طريقة استعمال الأوتلوك مع بريد الهوتميل (7,341 مشاهده)
تغيير لغة واجهة التطبيق من عربي الى انجليزي وبالعكس لـ Windows-based applications (7,335 مشاهده)
ما هي شبكة الانترنت: (6,452 مشاهده)
الدرس الثالث : بعض تطبيقات الدوال في اكسل (6,207 مشاهده)
تعريف الاستعلام وطريقة عرضه في آكسس، أنواع الاستعلامات، نافذة تحديد الاستعلام! (6,189 مشاهده)
اضافه صوت ونص لخلفيه في باور بوينت (6,180 مشاهده)
المنظور الفوتوغرافي Perspective Drawing (6,128 مشاهده)
ما هو برنامج الاكسل -00 (5,994 مشاهده)
أنشئ قاعدة بياناتك التي ستستند إليها في تعلم طريقة ربط الجداول والاستعلامات. (5,752 مشاهده)
الدرس الثاني : عمل خلفيات ملونة لشرائح (5,533 مشاهده)
نظام التشغيل (Windows) (5,526 مشاهده)
الدرس الأول : عمل شريحة في البوربوينت (5,430 مشاهده)
الدرس الثاني: بعض الحيل لتسهيل برنامج اكسل (5,426 مشاهده)
لإجراء العمليات الحسابية (4,946 مشاهده)
مقدمة عامة حول الاكسل وحيل خاصة بالاكسل0-- (4,914 مشاهده)
دورة الأكسس: الدرس السادس : منوعات في أكسيس .0--- (4,870 مشاهده)
كيفية تنصيب Turbo C++ وتشغيل برنامج بلغة السي عليه!- (4,829 مشاهده)
vالدرس الأول : عمل شريحة في البوربوينت (4,819 مشاهده)
الدرس الثالث: كيفية عمل مراحل انتقالية للشرائح (4,809 مشاهده)
اضافة الحركات للصور والنصوص (4,744 مشاهده)
جديد مواد مع عشوائي
التحويل التلقائي للحروف ل- ل- ه إلى اسم الجلالة0---- (2,360 مشاهده)
النسبة المئوية لا تظهر بالخط العربي & الشدة وألف المد في لفظ الجلالة0---النسبة المئوية لا تظهر بالخط العربي & الشدة وألف المد في لفظ الجلالة0--- (1,776 مشاهده)
ضبط خيارات اللغة فى الـ Microsoft Word0--- (2,190 مشاهده)
استخدام لوحة المفاتيح في الـ Word0---- (2,382 مشاهده)
إضافة كلمة سر إلي ملفات الورد دون استخدام برامج0--- (2,320 مشاهده)
دمج المراسلات0-- (1,428 مشاهده)
وضع صورة كخلفية للنص0-- (1,870 مشاهده)
السماح للمستخدمين بتعديل أجزاء من ملف وورد محمي (Word2003)0--- (1,447 مشاهده)
كتابة الأرقام الكسرية ورموز المعادلات0-- (2,057 مشاهده)
درس كامل عن الدمج السهل من لوحة المفاتيح ف0-ي برنامج الـ Word (1,612 مشاهده)
دورة الأكسس: الدرس السادس : منوعات في أكسيس .0--- (4,870 مشاهده)
دورة الأكسيس : الدرس الرابع : العلاقات0---- (2,661 مشاهده)
أساسيات في Access0--0 (2,376 مشاهده)
تصميم تقرير لطباعة البيانات0---- (2,233 مشاهده)
تصميم نموذج استعراض البيانات‏0--تصميم نموذج استعراض البيانات‏0-- (1,993 مشاهده)
تصميم نموذج إدخال‎ ‎البيانات0--- (2,240 مشاهده)
إنشاء قوائم خاصة باستخدام الماكرو(1)0-- (1,928 مشاهده)
خطوات إنشاء الماكرو في تذييل النموذج (2)0-- (1,440 مشاهده)
خطوات إنشاء الماكرو في تذييل النموذج (1)0- (1,510 مشاهده)
استعلامات SQL في Access - تعديل الجداول وإضافة الحقول0- (2,102 مشاهده)
استعلامات SQL في Access - تحديث البيانات الجدولية0-- (1,713 مشاهده)
الاستعلامات الإجرائية -4 (استعلام الحذف)0--- (1,169 مشاهده)
الاستعلامات الإجرائية -2 (استعلام الإلحاق)0--- (1,315 مشاهده)
تصميم تقرير لطباعة الإجمالي0--- (1,420 مشاهده)
استعلامات التحديد Select Query مع أمثله (1)0--- (1,876 مشاهده)
اعلانات في الموقع على جميع الصفحات

برمجة الويندوز باستخدام Win32 API function ( الدرس الثاني )

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



 


 



 


الهيكل الرئيسي للبرنامج الخاص بإنشاء النوافذ والتعامل معها مع الشرح ( الجزء الأول ):



 


اليوم سنحاول الإطلاع على الكود الأساسي لبناء النوافذ في windows والمشتمل على الدالتين ( )WinMain والدالة ( )WindowFunc ونتطرق لشرحه بشيء من التفصيل ولكن على أجزاء إن شاء الله. لنلقي نظرة عليه:



 








 




 


/* A minimal windows skeleton program. */

#include

LRESULT CALLBACK WindowFunc(HWND, UINT, WPARAM, LPARAM);

/* name of windows class */
char szWinName[] = "MyWin";


int WINAPI WinMain(HINSTANCE hThisInst, HINSTANCE hPrevInst,LPSTR lpszArgs, int nWinMode)
{
 
  HWND hwnd;
  MSG msg;
  WNDCLASSEX wcl;


  /* Define a window class. */
  wcl.cbSize = sizeof(WNDCLASSEX);

  wcl.hInstance = hThisInst; /* handle to this instance */

  wcl.lpszClassName = szWinName; /* window class name */

  wcl.lpfnWndProc = WindowFunc; /* window function */

  wcl.style = 0; /* default style */

  wcl.hIcon  = LoadIcon(NULL,IDI_APPLICATION);/*std icon */

  wcl.hIconSm= LoadIcon(NULL,IDI_WINLOGO);/*small icon */

  wcl.hCursor= LoadCursor(NULL,IDC_ARROW);/*cursor style */


  wcl.lpszMenuName = NULL; /* no menu */

  wcl.cbClsExtra = 0; /* no extra */

  wcl.cbWndExtra = 0; /* information needed */

  /* Make the window background white. */
  wcl.hbrBackground = (HBRUSH) GetStockObject(WHITE_BRUSH);

  /* Register the window class */
  if(!RegisterClassEx(&wcl)) return 0;

 
  /* Now that a window class has been registered,
  ** a window can be created. */
  hwnd = CreateWindow(
szWinName,    /* name of window class */
"Windows Skeleton Program", /* title */
WS_OVERLAPPEDWINDOW,    /* window style:normal */
CW_USEDEFAULT, /* X coordinate - let windows decide */
CW_USEDEFAULT, /* Y coordinate - let windows decide */
CW_USEDEFAULT, /* width - let windows decide */
CW_USEDEFAULT, /* height- let windows decide */
HWND_DESKTOP, /* no parent window */
NULL,
hThisInst, /*handle of this instance of hte program */
NULL   /* no additional arguments */
  );

  /* Display the window. */
  ShowWindow(hwnd, nWinMode);
  UpdateWindow(hwnd);

  /* Create the message loop. */
  while(GetMessage(&msg, NULL, 0, 0))
  {
    TranslateMessage(&msg);/* allow use of keyboard */
DispatchMessage(&msg); /*return control to windows */
  }
  return msg.wParam;
}

/* This function is called by Windows NT and
** is passed message from the message queue.
*********************************************/

LRESULT CALLBACK WindowFunc(HWND hwnd, UINT message,
   WPARAM wParam, LPARAM lParam)
{
switch(message) {
case WM_DESTROY: /* terminate the program */
PostQuitMessage(0);
break;
default:
/* Let Windows NT process any messages
** not specified in the preceding switch
** statement. */
return DefWindowProc(hwnd, message, wParam,  lParam);
    }
return 0;
}



 








 





 


وبإمكانك تحميل الكود من الرابط التالي:http://www.c4arab.com/images/lessons/programming/c/Starter.c




 


شرح الكود:



 





 




     




  •  

    المكتبة windows.h لابد من تضمينها في جميع برامج الويندوز وتحتوي على  API functions  والتعاريف المستخدمة في البرنامج الرئيسي.



 


LRESULT CALLBACK WindowFunc(HWND, UINT, WPARAM, LPARAM);




 




     



  • وهذا السطر هو declaration للدالة ( )WindowFunc وسنتطرق لشرحها بالتفصيل لاحقا.



 


char szWinName[] ="MyWin";




 




     



  • المتغير szWinName هو الإسم الذي يعرف به نظام التشغيل (الويندوز) اسم النافذة التي سأنشأها وأتعامل معها بالبرنامج.



 


int WINAPI WinMain(HINSTANCE   hThisInst,  HINSTANCE   hPrevInst, LPSTR   lpszArgs,  int   nWinMode); 




 




     



  • الدالة WinMain  هي الدالة الرئيسية بالبرنامج والتي يبدأ عندها التنفيذ والقيمة المرجعة منها هي int ولكن ماهي WINAPI؟!

    قبل توضيح ماهو WINAPI  فإننا نحتاج إلى توضيح مصطلح يُسمى بـ calling convention (اتفاقية إستدعاء الدوال) وهو موجهات directives للكومبايلر لترتيب الدوال بطريقة معينة في الملف (object file) ليتمكن بعد ذلك الـlinker من توليد الملف التنفيذي (exe.) والمتوافق مع نظام معين فمثلا WINAPI (والتي تُعد واحد من الـ calling convention) تعني أن الدوال التي تُعرف بواسطتها خاصة لنظام الويندوز 32 بت، فإستخدامها هنا كـdata type للدالة WinMain يخبر المترجم بأن الدالة WinMain من دوال نظام الويندوز 32 بت وأن التطبيق الذي ننشأه هو windows application.
    ويكافيء WINAPI اتفاقية استدعاء اخرى من الممكن أن تحل محلها وهي APIENTRY وكذلك PASCAL ولكن  PASCAL  تستخدم لويندوز 3.1.

    والدالة WinMain  كما يتضح لنا فإن لديها أربعة متغيرات هي كالتالي:



       



    1. hThisInst: وهو handle (مقبض: type of 32 bit integer) ويشير إلى النسخة الحالية من البرنامج في الذاكرة.


    2. hPrevInst : هو handle (مقبض: type of 32 bit integer)   ويشير إلى نسخة سابقة من البرنامج في الذاكرة فمثلا لو كان البرنامج قد قد سبق وقمنا بعمل run  له فإن المتغير hPrevInst يشير إلى هذه النسخة وفي حالة كانت هذه أول مرة للـ run فإن قيمة هذا المتغير =  null.


    3. lpszArgs: وهو  pointer to string (مؤشر لسلسلة)ويشير إلى سطر الأوامر command line الموجود بالإختصار الخاص بالملف التنفيذي للبرنامج على سطح المكتب.


    4. nWinMode: وهو عبارة عن قيمة صحيحة integer وتحدد فيه الشكل الذي تعرض فيه النافذة إما مصغرة أو مكبرة أو مخفية وبالإمكان الإطلاع على قيم هذا المتغير والتغيرات بالمذكرة بالصفحة السادسة.



 


HWND  hwnd;  




 




     



  • HWND هو handle to window (مقبض للنافذة التي سننشأها) وهو (type of 32 bit integer) ونحتاج لتعريفه بالبرنامج وذلك لحاجتنا إليه لاحقا كي نحدد به للنظام ماهو التطبيق الذي نريد عمل actions معينة عليه، فكما هو معلوم أن نظام الويندوز يعتمد اسلوب الـmultitasking  (متعدد المهام) وبالإمكان تشغيل أكثر من تطبيق بنفس الوقت فبتعريفنا لهذا المتغير نستطيع ان نحدد لنظام الويندوز التطبيق الذي نريد الحدث ان يتم عليه.



 


MSG  msg ;  




 




     



  • MSG هي structure data type  وهي تعمل كمؤشر للرسائل الخاصة بالنافذة المنشأة بالبرنامج  وهذه الـ structure سنتطرق لمحتواها لاحقا إن شاء الله.



 


WNDCLASSEX   wcl;   




 




     



  • WNDCLASSEX وهي  structure data type تحتوي على العناصر المكونة للنافذة وبواسطتها نستطيع تحديد الهيكل العام للنافذة المرسومة وسنتعرض في الدرس القادم لمحتوياتها ان شاء الله.

درس برمجة الويندوز باستخدام Win32 API function ( الدرس الثاني )

أضف هذه المادة في موقعك:
مواد مشابهة:
استخدام تنسيق ويندوز XP مع ادوات التحكم في تطبيقات الويندوز استخدام تنسيق ويندوز XP مع ادوات التحكم في تطبيقات الويندوز
استخدام تنسيق ويندوز XP مع ادوات التحكم في تطبيقات الويندوز
(مرات المشاهدة: 2,560 مرات)
برمجة الويندوز باستخدام Win32 API function ( الدرس الأول ) برمجة الويندوز باستخدام Win32 API function ( الدرس الأول )
برمجة الويندوز باستخدام Win32 API function ( الدرس الأول )
(مرات المشاهدة: 1,059 مرات)
 التطبيقات العاملة Processes ومسارات التنفيذ Threading التطبيقات العاملة Processes ومسارات التنفيذ Threading
التطبيقات العاملة Processes ومسارات التنفيذ Threading
(مرات المشاهدة: 1,740 مرات)
برمجة الويندوز باستخدام Win32 API function ( الدرس الرابع ) برمجة الويندوز باستخدام Win32 API function ( الدرس الرابع )
برمجة الويندوز باستخدام Win32 API function ( الدرس الرابع )
(مرات المشاهدة: 632 مرات)
اجراءات API و مقدمة عن الرسائل اجراءات API و مقدمة عن الرسائل
اجراءات API و مقدمة عن الرسائل
(مرات المشاهدة: 1,588 مرات)
درس : كيفية استخدام وظائف API . درس : كيفية استخدام وظائف API .
درس : كيفية استخدام وظائف API .
(مرات المشاهدة: 1,432 مرات)
برمجة الويندوز باستخدام Win32 API function ( الدرس الثالث ) برمجة الويندوز باستخدام Win32 API function ( الدرس الثالث )
برمجة الويندوز باستخدام Win32 API function ( الدرس الثالث )
(مرات المشاهدة: 691 مرات)
برمجة الويندوز باستخدام Win32 API function ( الدرس الخامس ) برمجة الويندوز باستخدام Win32 API function ( الدرس الخامس )
برمجة الويندوز باستخدام Win32 API function ( الدرس الخامس )
(مرات المشاهدة: 682 مرات)
برمجة الويندوز باستخدام Win32 API function ( مقدمة ) برمجة الويندوز باستخدام Win32 API function ( مقدمة )
برمجة الويندوز باستخدام Win32 API function ( مقدمة )
(مرات المشاهدة: 1,513 مرات)
الاختلافات بين برامج الـ DOS وبرامج الـ Windows الاختلافات بين برامج الـ DOS وبرامج الـ Windows
الاختلافات بين برامج الـ DOS وبرامج الـ Windows
(مرات المشاهدة: 2,154 مرات)
About
جميع الحقوق في هذا الموقع محفوظة وكل المواد على الاقسام ملك لاصحابها :Copyright © All rights reserved