نمایش نتایج 1 تا 30 از 30

نام تاپیک: آموزش مقدماتی Win32

Threaded View

پست قبلی پست قبلی   پست بعدی پست بعدی
  1. #1

    آموزش مقدماتی Win32

    سلام به همه دوستان.
    از اونجایی که یکی از مطرح ترین روشهای برنامه نویسی (Win32) هست، و از طرفی کتاب خاصی به زبان فارسی در این مورد وجود نداره، و همینطور در دنیا نیز کتاب در این مورد وجود نداره، تصمیم گرفتم یک مبحث در مورد آموزش Win32 درست کنم تا دوست داران Win32 بتونند با این روش برنامه بنویسند.
    ================================================== ======


    اکنون به مبحث برنامه نویسی win32 با زبان C++‎ می پردازد. متأسفانه در ایران به مقوله برنامه نویسی win32 به چشم یک روش منسوخ شده می نگرند، در حالی که این شیوه یکی از گسترده ترین روشها در دنیا و پیشقدم در نوآوریهای سخت افزاری و نرم افزاری می باشد.
    در این جا ما به آموزش C++‎ نمی پردازیم و فقط به آموزش win32 خواهیم پرداخت. البته مسائل کوچک اما مهم را از C++‎ حین آموزش بیان خواهیم کرد. در صورتی که مباحثی مانند typedef ، Macro ها و یا switch و ... را هنوز بلد نیستید، دست نگه دارید و ابتدا یک کتاب خوب در زمینه C++‎ استاندارد را مطالعه کنید.
    برنامه های ویندوزی در شروع کار ابتدا خودشان را در سیستم عامل ثبت و به عبارتی رجیستر می کنند و با یک حلقه برای پیغامهای دریافتی به کار خود ادامه می دهند.
    برای شروع یک مثال خیلی ساده از یک برنامه ویندوزی را مطرح می کنم. یادآوری می کنم برای شروع ابتدا باید یک پروژه Win32 از نوع Windows Application باز کنید. در زیر مراحل باز کردن یک پروژه win32 در Visual Studio 2005 نمایش داده شده :

    • ابتدا از منوی file > New گزینه Project را انتخاب کنید و سپس در کادر باز شده مانند زیر در سمت چپ گزینه Win32 و سمت راست گزینه Win32 Project را انتخاب کنید و در پایین پنجره یک نام برای پروژه جدید و سپس مسیر ذخیره را انتخاب و روی دکمه OK کلیک کنید.

    • سپس در کادر ویزاردی که باز می¬شودگزینه Application Settings را از سمت راست انتخاب کنید. نوع پروژه را Windows application انتخاب کرده و گزینه مارک دار Empty Project را انتخاب کنید و در نهایت دکمه Finish را کلیک کنید. با این کار شما یک پروژه خالی Win32 از نوع ویندوزی را بوجود آورده اید.

    • برای نوشتن کدها نیاز به یک فایل با پسوند cpp می باشد. در پنجره Solution Explorer روی Source File راست کلیک کنید و گزینه Add > New item را انتخاب کنید. در کادر باز شده شما می توانید انواع مختلفی از فایلها را به پروژه خود اضافه کنید. اما در حال حاضر ما به یک فایل cpp احتیاج داریم. در قسمت راست گزینه Code را انتخاب و در سمت چپ گزینه C++‎ File --- .cpp را انتخاب کنید. در زیر نام فایل را به main.cpp تغییر داده و روی دکمه Add کلیک کنید. حالا برای نوشتن کدها از main.cpp استفاده می کنیم.


    در بالا روش ساخت یک پروژه به سادگی شرح داده شد. اما مبحث اصلی کدها می باشند. کد نوشته شده در زیر یک پیغام را به نمایش در خواهد آورد:


    #include <windows.h>

    int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance,
    LPSTR lpCmdLine, int nCmdShow)
    {
    MessageBoxA(NULL, "Hello world!", "Note", MB_OK);
    return 0;
    }


    کد فوق را در main.cpp کپی کرده و برنامه را run کنید تا نتیجه مشاهده شود. این اولین و کوچکترین مثال از یک برنامه بود. حالا اجازه دهید مقداری در مورد کدها توضیح دهم. در خط اول یک هدر یا سرآیند(header) اضافه شده. توجه داشته باشید سرآیندها شامل توابع و ملحقات کتابخانه ای می باشند که در زمان نیاز در بالای کدها اضافه می شوند. سرآیند windows.h بسیاری از توابع و نوع های مربوط به Win32 را به پروژه اضافه می کند. پس برای ما وجود این سرآیند ضروری می باشد.

    در خط بعدی تابع اصلی و اجرایی برنامه تعریف شده. برنامه ها ابتدا از اجرای یک تابع که اکثرا با نامهای main و یا WinMain می باشند، شروع به اجرا کرده و از طریق این تابع به قسمت های دیگر برنامه هدایت می شوند.

    int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance,
    LPSTR lpCmdLine, int nCmdShow)


    توابع می توانند دارای پارامتر باشند. تابع اصلی برنامه دارای چندین پارامتر ضروری بوده که درزمان اجرای برنامه مورد استفاده قرار می گیرند. این پارامترها از نوع های تعریف شده در Win32 هستند که به اختصار در مورد آنها توضیح می دهم:

    HINSTANCE hInstance : اولین پارامتر که یک هندل یا دستگیره(Handle) از برنامه اجرا شده در حافظه را به برنامه برمی گرداند. برای ارتباط با برنامه اجرا شده ما که در حافظه مستقر است، می¬توان از این پارامتر که با نام hInstance تعریف شده استفاده نمود.

    HINSTANCE hPrevInstance : یک هندل ثانویه. این پارامتر همیشه در برنامه های Win32 مقدار NULL برمی گرداند. این یک هندل از نمونه برنامه اجرا شده ما در قبل را برمی گرداند. البته مقدار به این پارامتر در مد Win16 ارسال می شود و در Win32 نادیده گرفته می شود.

    LPSTR lpCmdLine : از مدل آرگومانهای ارسال شده در خط فرمان(Command Prompt) می باشد و یک مقدار رشته ای در اختیار برنامه قرار می دهد. LPSTR یک نوع تعریف شده در Win32 می باشد و بعبارتی معادل یک اشاره گر از نوع char است.

    int nCmdShow : یک مقدار عددی می باشد که به تابع
    ShowWindow()
    ارسال می شود. در آینده در این مورد توضیح می دهم.

    hInstance برای وظایف متعددی مانند بارگذاری منابع و ... مورد استفاده قرار می گیرد و اینها در داخل و اساس ماژول برنامه اجرا می شوند.

    نکته: ماژول چیست؟ یک ماژول منبع بارگذاری شده در حافظه سیستم از یک EXE و یا DLL می باشد. در اینجا برنامه ما از نوع EXE می باشد و تا زمانی که در حال اجراست، ماژول برنامه در حافظه موجود می باشد.

    WINAPI در تعریف تابع یک فراخوانی قراردادی می باشد که یک نوع از
    __stdcall
    را تعیین می کند. اگر معنی این را نمی دانید نگران نباشید. در این مثال این گزینه نتیجه ملموسی برای ما ندارد. فقط یادتان باشد وجود WINAPI در تعریف این تابع ضروری است.

    ================================================== =======

    فعلا تا اینجا بقیه مطلب را بعدا می نویسم. لازمه بگم بنده در حال جمع آوری و تدوین یک کتاب در مورد win32 هستم و این مطالب از ترجمه های منابع است.
    عکس های ضمیمه عکس های ضمیمه

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •