دنیای کامپیوتر

وب نوشت های یک دیوانه ی کامپیوتر

دنیای کامپیوتر

وب نوشت های یک دیوانه ی کامپیوتر

آموزش برنامه نویسی ویندوز ( Win32 ) ، درس دوم

درس دوم : مقدمه ای بر منابع
اصول منابع
 مقدمه :
یک منبع یک شئ است که نمی توان آنرا تحت دستور زبان ++C تعریف کرد با این حال برای تکمیل یک برنامه به آن نیاز است . به بیان صریح تر، یک منبع، متنی است متشکل از یک سلسله فرامین که با ضوایط خاصی تعریف شده اند و برنامه به واسطه ی این فرامین منبع مورد نظر را تفسیر می کند . منو ها، آیکون ها، اشاره گر ها، کادر های محاوره، صداها و ... نمونه هایی از منابع هستند .

ابزار های مختلفی برای ساخت منابع می توانند مورد استفاده قرار بگیرند که بسته به هدف و نوع استفاده شما از منابع دارد . برخی منابع کاملا مبتنی بر متن هستند، برای مثال String Table و Accelerator Table که رشته های متنی را در خود نگه می دارند . برخی منابع نیاز به طراحی دارند، مانند آیکون ها و اشاره گر ها و یا عکس هایی با گرافیک بالا که توسط یک نرم افزار خارجی ساخته شده و سپس آنها را وارد برنامه می کنند . در عین حال منابع می توانند ترکیبی از منابع مختلف دیگر باشند .
Win32 Windows
ایجاد منابع :
باز هم یاد آور می شویم که منابع از جمله مفاهیم زبان ++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;
}
//---------------------------------------------------------------------------

نظرات 7 + ارسال نظر
محمد پنج‌شنبه 26 شهریور‌ماه سال 1388 ساعت 12:02 ق.ظ http://www.setmapi.com?rgm=biibiic

سلام داداش وبلاگ خیلی باحالی داری .اگه مایلی بیا به وب من و بگو تا با هم تبادل لینک کنیم

راستی اگه یه سایته تبلیغاتیتوپ میخوای رو قسمت وب کلیک کن .خدا وکیلی عالیه و لازمه توش فعال بشی به قرآن خیلی خوبه برو امتحان کن و شیرینی پول دار شدنت هم به ما بده..

یا علی



وب من(http://www.torkaman.blogsky.com)

حسن یکشنبه 29 شهریور‌ماه سال 1388 ساعت 12:28 ق.ظ http://www.tiktaak.blogsky.com/

سلام داداش
با قالبت کلی حال کردم از لحاظ گرافیکی خیلی خشگله

ساناز یکشنبه 20 تیر‌ماه سال 1389 ساعت 08:45 ب.ظ

لطفا بقیه این آموزش ویندوز۳۲ رو بزارید اگر کتابی هم میشناسید معرفی کنید .
با تشکر ساناز

ساناز یکشنبه 20 تیر‌ماه سال 1389 ساعت 08:49 ب.ظ

خیلی ممنون از وبلاگتون
اگه هنوز فعال هستین کمکم کنید من امروز وبلاگتون رو دیدم راستش من میخوام تو محیط ویندوز۳۲پروژکت یه برنامه بنویسم که 3تا نقطه را بگیره و بصورت 3بعدی نمایش بده بعد از هر جا که خواستم به هش نگاه کنم لطفا اگه مقدور کمکم کنید.
خیلی ممنون
خداحافظ

حسن دوشنبه 11 بهمن‌ماه سال 1389 ساعت 09:05 ب.ظ

با عرض سلام و خسته نباشید اگه میشه دوست عزیز اموزش برنامه نویسی ویندوز رو ادامه بدید.

رامین سه‌شنبه 3 اسفند‌ماه سال 1389 ساعت 11:33 ب.ظ http://marssilen.blogsky.com

مطالبت عالیه
من از سی پلاس پلاس خیلی خوشم میاد ولی نمودنم چه کتابی بهتره بخونم تا حرفه ای بشم کمک کن باشه
رامین
http://marssilen.blogfa.com
حتما جوابم رو بده
بای

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

محمد چهارشنبه 5 مهر‌ماه سال 1391 ساعت 09:47 ب.ظ

سلام
آموزشی که برای برنام نویسی ویندوز خیلی خوب و مفیده بازم ادامه بدین

برای نمایش آواتار خود در این وبلاگ در سایت Gravatar.com ثبت نام کنید. (راهنما)
ایمیل شما بعد از ثبت نمایش داده نخواهد شد