درس دوم : مقدمه ای بر منابع
اصول منابع
مقدمه :
یک منبع یک شئ است که نمی توان آنرا تحت دستور زبان ++C تعریف کرد با این حال برای تکمیل یک برنامه به آن نیاز است . به بیان صریح تر، یک منبع، متنی است متشکل از یک سلسله فرامین که با ضوایط خاصی تعریف شده اند و برنامه به واسطه ی این فرامین منبع مورد نظر را تفسیر می کند . منو ها، آیکون ها، اشاره گر ها، کادر های محاوره، صداها و ... نمونه هایی از منابع هستند .
ابزار های مختلفی برای ساخت منابع می توانند مورد استفاده قرار بگیرند که بسته به هدف و نوع استفاده شما از منابع دارد . برخی منابع کاملا مبتنی بر متن هستند، برای مثال String Table و Accelerator Table که رشته های متنی را در خود نگه می دارند . برخی منابع نیاز به طراحی دارند، مانند آیکون ها و اشاره گر ها و یا عکس هایی با گرافیک بالا که توسط یک نرم افزار خارجی ساخته شده و سپس آنها را وارد برنامه می کنند . در عین حال منابع می توانند ترکیبی از منابع مختلف دیگر باشند .
ایجاد منابع :
باز هم یاد آور می شویم که منابع از جمله مفاهیم زبان ++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;
WNDCLASSEX WndClsEx;
// Create the application window
WndClsEx.cbSize = sizeof(WNDCLASSEX);
WndClsEx.style = CS_HREDRAW | CS_VREDRAW;
WndClsEx.lpfnWndProc = WndProcedure;
WndClsEx.cbClsExtra = 0;
WndClsEx.cbWndExtra = 0;
WndClsEx.hIcon = LoadIcon(NULL, IDI_APPLICATION);
WndClsEx.hCursor = LoadCursor(NULL, IDC_ARROW);
WndClsEx.hbrBackground = (HBRUSH)GetStockObject(WHITE_BRUSH);
WndClsEx.lpszMenuName = NULL;
WndClsEx.lpszClassName = ClsName;
WndClsEx.hInstance = hInstance;
WndClsEx.hIconSm = LoadIcon(NULL, IDI_APPLICATION);
// Register the application
RegisterClassEx(&WndClsEx);
// 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.torkaman.blogsky.com)
سلام داداش
با قالبت کلی حال کردم از لحاظ گرافیکی خیلی خشگله
لطفا بقیه این آموزش ویندوز۳۲ رو بزارید اگر کتابی هم میشناسید معرفی کنید .
با تشکر ساناز
خیلی ممنون از وبلاگتون
اگه هنوز فعال هستین کمکم کنید من امروز وبلاگتون رو دیدم راستش من میخوام تو محیط ویندوز۳۲پروژکت یه برنامه بنویسم که 3تا نقطه را بگیره و بصورت 3بعدی نمایش بده بعد از هر جا که خواستم به هش نگاه کنم لطفا اگه مقدور کمکم کنید.
خیلی ممنون
خداحافظ
با عرض سلام و خسته نباشید اگه میشه دوست عزیز اموزش برنامه نویسی ویندوز رو ادامه بدید.
مطالبت عالیه
من از سی پلاس پلاس خیلی خوشم میاد ولی نمودنم چه کتابی بهتره بخونم تا حرفه ای بشم کمک کن باشه
رامین
http://marssilen.blogfa.com
حتما جوابم رو بده
بای
سلام دوست من
خوشحالم که خوشت اومد
فکر می کنم برای حرفه ای شدن تمرین و کار سخت لازمه، بهترین منبع هم اینترنت هست.
موفق باشی
سلام
آموزشی که برای برنام نویسی ویندوز خیلی خوب و مفیده بازم ادامه بدین