PDA

توجه ! این یک نسخه آرشیو شده میباشد و در این حالت شما عکسی را مشاهده نمیکنید برای مشاهده کامل متن و عکسها بر روی لینک مقابل کلیک کنید : آموزش برنامه نویسی ویندوز ( Win32 )



آبجی
24th June 2010, 02:50 PM
درس اول : اصول ویندوز
آشنایی با ویندوز
بررسی اجمالی :
مایکروسافت ویندوز یک سیستم عامل است که به اشخاص کمک می کند تا بتوانند با یک کامپیوتر شخصی به تعامل بپردازند . برنامه نویسانی که می خواهند برای این سیستم عامل برنامه بنویسند ، برنامه های خود را بر مبنای کتابخانه ای می نویسند که Win32 نامیده می شود .

Win32 کتابخانه ای است متشکل از انواع داده ای، ثوابت، توابع و کلاس هایی ( اساسا ساختار هایی ) که برای ساخت برنامه های تحت ویندوز مورد استفاده قرار می گیرند .

برای ایجاد یک برنامه ی ابتدایی ویندوزی نیاز به کامپایلری برای سیستم عامل ویندوز ( اصطلاحا یک کامپایلر 32 بیتی ) دارید . اگر چه شما می توانید Win32 را در زبان های برنامه نویسی مختلفی ( از جمله بورلند دلفی ) به کار ببرید، اما در اینجا ما به آموزش Win32 فقط با یک زبان برنامه نویسی و همین طور یک کامپایلر خواهیم پرداخت . در اصل کتابخانه ی Win32 به زبان C نوشته شده است که زبان اصلی سیستم عامل ویندوز محسوب می شود .
تمام برنامه هایی که در اینجا آموزش داده خواهند شد، به زبان ++C نوشته شده اند . البته در این برنامه های تفاوت چندانی بین C و ++C مشاهده نخواهید کرد . اگر چه اکثر ساختارهای Win32 آبجکت های زبان C هستند، اما ما آنها را همراه با کتابخانه های ++C به کار خواهیم برد و با این کار از مزایای برنامه نویسی شئ گرا استفاده خواهیم کرد .

http://lh6.ggpht.com/_kkPCtaT5WsY/SrEyM74FP0I/AAAAAAAAANs/hbCgS4AsAt8/s144/Microsoft_Windows_Logo_from_1992_to_2000.png

ایجاد یک برنامه ی Win32 :
تمام برنامه های ویندوزی در درجه اول مشابه به نظر می رسند و نیز رفتار های مشابه دارند، اما همانند برنامه های ++C تفاوت های کوچکی در ساخت برنامه ها تحت کامپایلر های مختلف وجود دارد که بسته به نوع کامپایلر خود ملزم به رعایت آنها هستید .
ما برای برنامه هایی که در اینجا آموزش خواهیم داد از کامپایلر Microsoft Visual C++ 2008 استفاده خواهیم کرد . همانطور که دربالا اشاره شد می توانید این برنامه ها را با کمی تغییردر کامپایلر های دیگر نیز اجرا کنید .
کد یک برنامه ی ویندوزی win32 شامل دو مورد اساسی است :
1) فایل سرآیند ( windows.h" ( Header File" : این فایل سرآیند اکثر تعاریف، انواع و توابع مربوط به کتابخانه Win32 را شامل می شود . کد زیر این فایل سرآیند را به برنامه ما اضافه خواهد کرد :

#include <windows.h>
2) تابع WinMain : برای برنامه های ویندوزی این تابع در واقع معادل تابع main در برنامه های استاندارد ++C می باشد . این تابع نقطه شروع یک برنامه ویندوزی می باشد . همه چیز از اینجا شروع خواهد شد !
تعریف این تابع به شکل زیر انجام می شود :
INT WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance,
LPSTR lpCmdLine, int nCmdShow)
{
return 0;
}
همانطور که مشاهده می کنید این تابع چهار آرگومان می گیرد که در هنگام اجرای برنامه توسط سیستم عامل به تابع ارسال می شوند . در درس های بعدی در مورد آنها به تفصیل صحبت خواهیم کرد . نوع برگشتی تابع INT می باشد که از انواع معرفی شده در Win32 بوده و معادل نوع int در ++C می باشد . عبارت WINAPI بیانگر نوعی فراخوانی قراردادی تابع می باشد، در این مورد باید بدانید که وجود این عبارت در تعریف تابع ضروری است .
آموزش عملی : معرفی برنامه نویسی ویندوز
استفاده از Microsoft Visual C++ 2008 :
برای ساختن یک برنامه ی جدید Win32 با استفاده از Microsoft Visual C++ 2008 باید از جعبه محاوره New Project گزینه Win32 Project را انتخاب کنید . Microsoft Visual C++ 2008 در هنگام ایجاد برنامه های Win32 برای کمک به شما و همچنین سرعت بخشیدن به کار به طور اتوماتیک کدهایی را که یک برنامه ویندوزی ابتدایی برای اجرا لازم دارد، به پروژه شما اضافه می کند . این کدها شامل کد پنجره اصلی به همراه منوی اصلی، یک جعبه محاوره About و همچنین توابع پردازش پیغام مربوطه می باشد .
به علت اینکه ما در حال آموزش Win32 هستیم راه سخت را در پیش خواهیم گرفت، ایجاد یک برنامه از صفر !

1) مایکروسافت ویژوال استودیو را اجرا کنید .
2) از منوی اصلی گزینه ی ...File -> New -> Project را کلیک کنید .
3) مطابق شکل زیر از جعبه محاوره ی New Project گزینه ی Win32 Project را کلیک کنید :

http://lh6.ggpht.com/_kkPCtaT5WsY/SrANzl7fweI/AAAAAAAAANg/xkvQ9rRH26U/s400/Win32_01.png
4) در قسمت Location مسیری که می خواهید پروژه در آنجا ذخیره شود را انتخاب نمایید .
5) در قسمت Name نام مورد نظر خود را برای پروژه وارد کرده و دکمه ی OK را کلیک کنید .
6) جعبه محاوره ی دیگری ظاهر خواهد شد . گزینه Application Settings را کلیک کرده و گزینه های آنرا مطابق شکل تنظیم کرده و دکمه ی Finish را کلیک کنید .

http://lh3.ggpht.com/_kkPCtaT5WsY/SrANzqIAVSI/AAAAAAAAANk/xnbNYycmM04/s400/Win32_02.png
7) برای شروع نیاز به فایلی برای نوشتن کد برنامه دارید . از منوی اصلی گزینه ی ...Project -> Add New Item را کلیک کنید . دقت کنید که در پنجره Solution Explorer پروژه مورد نظر در حالت انتخاب باشد .
8) مطابق شکل از جعبه محاوره Add New Item گزینه ی (C++ File (.cpp را کلیک کنید . در قسمت Name عبارت Main را وارد کنید و کلید OK را کلیک کنید .

http://lh4.ggpht.com/_kkPCtaT5WsY/SrANzwEMd2I/AAAAAAAAANo/tV2HzQedUmk/s400/Win32_03.png
9) کد زیر را داخل فایل Main وارد کرده و برنامه را اجرا کنید .

//---------------------------------------------------------------------------
#include <windows.h>

//---------------------------------------------------------------------------
INT WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance,
LPSTR lpCmdLine, int nCmdShow)
{
MessageBoxA(NULL, "Hello world!", "Note", MB_OK);
return 0;
}
//---------------------------------------------------------------------------
بدنه ی این تابع به جز دستور ;return 0 یک دستور دیگر هم دارد که باعث نمایش یک کادر پیغام می شود .
تبریک می گوییم ! شما اولین برنامه ویندوزی خود را ایجاد کردید .

آبجی
24th June 2010, 02:50 PM
درس دوم : مقدمه ای بر منابع
اصول منابع
مقدمه :
یک منبع یک شئ است که نمی توان آنرا تحت دستور زبان ++C تعریف کرد با این حال برای تکمیل یک برنامه به آن نیاز است . به بیان صریح تر، یک منبع، متنی است متشکل از یک سلسله فرامین که با ضوایط خاصی تعریف شده اند و برنامه به واسطه ی این فرامین منبع مورد نظر را تفسیر می کند . منو ها، آیکون ها، اشاره گر ها، کادر های محاوره، صداها و ... نمونه هایی از منابع هستند .

ابزار های مختلفی برای ساخت منابع می توانند مورد استفاده قرار بگیرند که بسته به هدف و نوع استفاده شما از منابع دارد . برخی منابع کاملا مبتنی بر متن هستند، برای مثال String Table و Accelerator Table که رشته های متنی را در خود نگه می دارند . برخی منابع نیاز به طراحی دارند، مانند آیکون ها و اشاره گر ها و یا عکس هایی با گرافیک بالا که توسط یک نرم افزار خارجی ساخته شده و سپس آنها را وارد برنامه می کنند . در عین حال منابع می توانند ترکیبی از منابع مختلف دیگر باشند .

http://lh6.ggpht.com/_kkPCtaT5WsY/SrEyM74FP0I/AAAAAAAAANs/hbCgS4AsAt8/s144/Microsoft_Windows_Logo_from_1992_to_2000.png
ایجاد منابع :
باز هم یاد آور می شویم که منابع از جمله مفاهیم زبان ++C نیستند بلکه از مفاهیم سیستم عامل ویندوز هستند که برای تکمیل برنامه مورد استفاده قرار می گیرند . به همین دلیل محیط هایی که شما در آنها برنامه نویسی می کنید ممکن است ابزار های مختلفی برای ساخت منابع مختلف در اختیار شما قرار دهند و یا حتی هیچ ابزاری در اختیار شما قرار ندهند . به عنوان مثال محیط هایی نظیر Borland C++ Builder و یا Microsoft Visual C++ 2008 تمام ابزار های لازم برای ساخت انواع منابع را دارا می باشند در حالی که برای محیط هایی نظیر C++BuilderX باید از ابزار های خارجی کمک گرفت .

به محض ایجاد یک منبع شما باید آنرا ذخیره کنید . برخی منابع در فایل های مجزای مخصوص به خود ذخیره می شوند، مانند بیتمپ ها، آیکون ها، اشاره گر ها، صداها و ... فایل های هر کدام از این منابع پسوند های مربوط به خود را دارند . سپس به فایلی با پسوند .rc ( فایل منبع برنامه ) اضافه می شوند . در مورد این منابع فقط لیستی از آنها به فایل منبع افزوده می شود . برخی دیگر از منابع نیز وجود دارند که مستقیما در فایل منبع تعریف می شوند و نیاز به فایل جداگانه ای ندارند . اینها همان منابع مبتنی بر متن هستند که در بالا به آنها اشاره شد مانند جداول متنی، رشته ها و ...

بعد از ایجاد فایل منبع، شما باید آنرا کامپایل کنید . در این مورد هم در محیط های مختلف با شرایط مختلفی روبرو خواهید شد . محیط Microsoft Visual C++ 2008 هنگام اجرای برنامه این کار را به صورت خودکار برای شما انجام خواهد داد .

آموزش عملی : معرفی منابع ویندوز
1) یک پروژه جدید Win32 مانند آنچه در درس قبل آموزش داده شد ایجاد کنید . نام پروژه را Resources1 قرار دهید .
2) یک فایل کد با نام Exercise.cpp ایجاد کنید .
3) کد زیر را در فایل Exercise.cpp وارد کنید .
4) برنامه را اجرا و تست کنید .

//---------------------------------------------------------------------------
#include <windows.h>
#pragma hdrstop



//---------------------------------------------------------------------------
LPCTSTR ClsName = L"FundApp";
LPCTSTR WndName = L"Resources Fundamentals";
LRESULT CALLBACK WndProcedure(HWND hWnd, UINT uMsg,
WPARAM wParam, LPARAM lParam);
//---------------------------------------------------------------------------
INT WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance,
LPSTR lpCmdLine, int nCmdShow)
{
MSG Msg;
HWND hWnd;
WNDCLAS*** WndCl***;

// Create the application window
WndCl***.cbSize = sizeof(WNDCLAS***);
WndCl***.style = CS_HREDRAW | CS_VREDRAW;
WndCl***.lpfnWndProc = WndProcedure;
WndCl***.cbCl***tra = 0;
WndCl***.cbWndExtra = 0;
WndCl***.hIcon = LoadIcon(NULL, IDI_APPLICATION);
WndCl***.hCursor = LoadCursor(NULL, IDC_ARROW);
WndCl***.hbrBackground = (HBRUSH)GetStockObject(WHITE_BRUSH);
WndCl***.lpszMenuName = NULL;
WndCl***.lpszClassName = ClsName;
WndCl***.hInstance = hInstance;
WndCl***.hIconSm = LoadIcon(NULL, IDI_APPLICATION);

// Register the application
RegisterClas***(&WndCl***);

// Create the window object
hWnd = CreateWindowEx(0,
ClsName,
WndName,
WS_OVERLAPPEDWINDOW,
CW_USEDEFAULT,
CW_USEDEFAULT,
CW_USEDEFAULT,
CW_USEDEFAULT,
NULL,
NULL,
hInstance,
NULL);

// Find out if the window was created
if( !hWnd ) // If the window was not created,
return FALSE; // stop the application

// Display the window to the user
ShowWindow(hWnd, nCmdShow);// SW_SHOWNORMAL);
UpdateWindow(hWnd);

// Decode and treat the messages
// as long as the application is running
while( GetMessage(&Msg, NULL, 0, 0) )
{
TranslateMessage(&Msg);
DispatchMessage(&Msg);
}

return Msg.wParam;
}
//---------------------------------------------------------------------------
LRESULT CALLBACK WndProcedure(HWND hWnd, UINT Msg,
WPARAM wParam, LPARAM lParam)
{
switch(Msg)
{
case WM_DESTROY:
PostQuitMessage(WM_QUIT);
break;
default:
// Process the left-over messages
return DefWindowProc(hWnd, Msg, wParam, lParam);
}
// If something was not done, let it go
return 0;
}
//---------------------------------------------------------------------------
منبع : http://www.functionx.com (http://www.functionx.com/)

استفاده از تمامی مطالب سایت تنها با ذکر منبع آن به نام سایت علمی نخبگان جوان و ذکر آدرس سایت مجاز است

استفاده از نام و برند نخبگان جوان به هر نحو توسط سایر سایت ها ممنوع بوده و پیگرد قانونی دارد