User Tag List

Ցույց են տրվում 1 համարից մինչև 15 համարի արդյունքները՝ ընդհանուր 38 հատից

Թեմա: Խաղի ծրագրավորում Directx-ով , C++ լեզվի օգնությամբ

Ծառի տեսքով դիտում

Նախորդ գրառումը Նախորդ գրառումը   Հաջորդ գրառումը Հաջորդ գրառումը
  1. #10
    Սկսնակ անդամ Zte77-ի ավատար
    Գրանցման ամսաթիվ
    29.09.2009
    Գրառումներ
    15
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    2.դաս խաղի ծրագրավորում Directx –ով, C++ լեզվի օգնությամբ:Ստեղծում ենք պատուհան(2)

    Իրադարձությունների մշակում Windows-ում

    Windows- ում իրադարձությունները մշակվում են ձեր ստեղծաց իրադարձությունների մշակիչ սարքով.Հավելվածի աշխատանքի ժամանակ գեներացվում են տարբեր հաղորդագրություններ որոնք հաղորդվում են հերթ.Որից հետո իրադարձությունների մշակիչը վերցնում է նրանց և հաղորդում է MainWinProc ( ) ֆունկցիային մշակման համար.

    Նաենք MainWinProc – ի պրոտոտիպը.

    LRESULT CALLBACK MainWinProc ( HWND hwnd, UINT msg, WPARAM wparam, LPARAM lparam )

    MainWinProc –ի պարամետրերը հետևյալն են.

    Hwnd – պատուհանի դեսկրիպտոր.
    Msg – իրադարձությունների ինդենտիֆիկատոր, որը պետկ է հաղորդվի MainWinProc ( ) ֆունկցիային մշակման համար.
    wparam և lparam - դա իրադարձությունների մշակման լրացուցիչ պարամետրերն են.Իրադարձությունների մշակիչ գրելու համար հաճախ օգտագործվում է switch ( msg ) կոնստրուկցիան.Նաենք մի քանի հաղորդագրություն ,որոնք կարող են պետկ գալ խաղի ստեղծման համար.

    WM_PAINT – այդ հաղորդագրությունը ուղարկվում է երբ մեզ պետկ է վերանկարել ամբողջ պատուհանը, որը կարող էր տեղփոված լինել կամ չափ է փոխվել.
    WM_DESTROY - այդ հաղորդագրությունը ուղարկվում է Windows, երբ պատուհանը պետկ է փագվի.
    WM_QUIT - դրանից հետո կանչվում է այդ հաղորդագրությունը, որը և փագում է պատուհանը.

    Միավորելով իրար մենք կստանանք MainWinProc ( ) ֆունկցիա.


    LRESULT CALLBACK MainWinProc(HWND hwnd,
    UINT msg, WPARAM wparam,
    LPARAM lparam)
    {

    switch(msg)
    {


    case WM_PAINT:
    break;

    case WM_DESTROY:
    {
    PostQuitMessage(0);
    return(0);
    } break;

    }

    return (DefWindowProc(hwnd, msg, wparam, lparam));
    }


    PostQuitMessage ( 0 ) ֆունկցիան QUIT ֆունկցիաին դնում է հերթին. Որը և կփագի ձեր պատուհանը.DefWindowProc ( ) ֆունկցիան մշակում է այն հաղորդագրությունները որոնք դուք չեք օգտագործում.

    Գլխավոր իրադարձությունների մշակիչ

    Կնաենք գլխավոր իրադարձությունների մշակիչ, որը օգտագործվում է հետևյալ օրինակում:

    while(GetMessage(&msg,NULL,0,0))
    {

    TranslateMessage(&msg);

    DispatchMessage(&msg);
    }

    While ցիկլը կատարվում է եդքան մինչև GetMessage ( ) ֆունկցիան վերադարձնում ոչ զրո նշանակություն.Ցիկլի աշխատանքը կատարվում է հետևյալ ձև երբ ստանում ենք հերթից հաղորդագրություն ինքը մշակվում է TranslateMessage ( ) ֆունկցիայով և հաղորդվում է DispatchMessage ( ) ֆունկցիային, որը կանշում է MainWinProc ( ) ֆունկցիա մշակմա համար, հաղորդելով նրան ամբողջ պետկական ինֆորմացիա.

    Հիմա նաեք թե ինչ է մեր մոտ ստացվել.
    Մեր նայաց ծրագիրը կարող եք բեռնավորել(քաշել) ստեղից http://ifolder.ru/14252971

    //---------------------------------------------------------------------------------------

    #include <windows.h> // Միացնում ենք Windows-ի վերնագրի ֆաիլ
    #include "resource.h"

    //----------------------------------------------------------------------------------------
    // Ֆունկցիա
    // MainWinProc()
    //Ստեղ կատարվում է իրադարձությունների մշակում
    //----------------------------------------------------------------------------------------

    LRESULT CALLBACK MainWinProc(HWND hwnd, //Պատուհանի դեսկրիպտոր
    UINT msg, //հաղորդագրության ինդենտիֆ.
    WPARAM wparam, //լրացուցիչ ինֆորմացիա
    LPARAM lparam) // լրացուցիչ ինֆորմացիա
    {

    switch(msg)
    {


    case WM_PAINT:
    break;

    case WM_DESTROY:
    {
    PostQuitMessage(0);
    return(0);
    } break;

    }

    return (DefWindowProc(hwnd, msg, wparam, lparam));
    }
    //---------------------------------------------------------------------------------------
    // Ֆունկցիա
    // WinMain()
    //---------------------------------------------------------------------------------------

    int WINAPI WinMain( HINSTANCE hinstance,
    HINSTANCE hprevinstance,
    LPSTR lpcmdline,
    int ncmdshow)
    {

    WNDCLASSEX windowsclass; // Ստեղծում ենք դաս(class)
    HWND hwnd; // Ստեղծում ենք պատուհանի դեսկրիպտոր
    MSG msg; // Հաղորդագրություն


    // Определим класс окна WNDCLASSEX
    windowsclass.cbSize = sizeof(WNDCLASSEX);
    windowsclass.style = CS_DBLCLKS | CS_OWNDC |
    CS_HREDRAW | CS_VREDRAW;
    windowsclass.lpfnWndProc = MainWinProc;
    windowsclass.cbClsExtra = 0;
    windowsclass.cbWndExtra = 0;
    windowsclass.hInstance = hinstance;
    windowsclass.hIcon = LoadIcon(hinstance, IDI_APPLICATION);
    windowsclass.hCursor = LoadCursor(NULL, IDC_ARROW);
    windowsclass.hbrBackground = (HBRUSH)GetStockObject(GRAY_BRUSH);
    windowsclass.lpszMenuName = NULL;
    windowsclass.lpszClassName = "WINDOWSCLASS";
    windowsclass.hIconSm = LoadIcon(NULL, IDI_APPLICATION);

    // Կգրանցենք դասը(class)
    if (!RegisterClassEx(&windowsclass))
    return(0);

    // Երբ դասը(class) գրանցված է կարելի է ստեղծել պատուհան

    if (!(hwnd = CreateWindowEx(NULL, // պատուհանի ձևը
    "WINDOWSCLASS", // դաս(class).
    " Bazain patuhan Directx-i hamar ", // անվանում о
    WS_OVERLAPPEDWINDOW | WS_VISIBLE,
    300,150, // վերևի ձախ անկյու
    500,400, // լայնություն և բարձրություն
    NULL, // մայրական պատուհանի դեսկրիպտոր
    NULL, // մենուի դեսկրիպտոր
    hinstance, // հավելվածի նմուշի դեսկրիպտոր
    NULL))) //
    return(0);


    ShowWindow( hwnd, SW_SHOWDEFAULT ); //Կնկարենք պատուհան
    UpdateWindow( hwnd ); //Կթարմացնենք պատուհանը

    while(GetMessage(&msg,NULL,0,0))
    {

    TranslateMessage(&msg);

    DispatchMessage(&msg);
    }


    return(msg.wParam);

    }

    Կոմպիլացիաից հետո կտեսնեք դա


    Մյուս դասում մենք կավելացնենք մեր պատուհանի կոդին Directx- ի կոդը.Եվ մյուս դասում մենք կվերջացնենք պատուհանի ստեղծելը և կանցնենք գրաֆիկաի ծրագրավորմանը , 3D օբեկտների դուրս բերում մեր ստեղծաց պատուհանում.

  2. Գրառմանը 3 հոգի շնորհակալություն են հայտնել.

    Cyber (30.09.2009), xaker00 (01.10.2009), Yellow Raven (30.09.2009)

Թեմայի մասին

Այս թեման նայող անդամներ

Այս պահին թեմայում են 1 հոգի. (0 անդամ և 1 հյուր)

Համանման թեմաներ

  1. Գրառումներ: 10
    Վերջինը: 29.07.2012, 11:57
  2. Գրառումներ: 38
    Վերջինը: 26.12.2010, 13:13
  3. Ստորագրության լեզվի հարցը
    Հեղինակ՝ StrangeLittleGirl, բաժին` Հայերեն
    Գրառումներ: 90
    Վերջինը: 15.06.2010, 00:14
  4. Directx 10 թե 9
    Հեղինակ՝ ..Ando.., բաժին` Համակարգչային ծրագրեր
    Գրառումներ: 21
    Վերջինը: 10.05.2009, 15:07
  5. Լեզվի ընտրություն
    Հեղինակ՝ Սահակ, բաժին` Առաջարկություններ և դիտողություններ
    Գրառումներ: 6
    Վերջինը: 25.03.2007, 23:05

Էջանիշներ

Էջանիշներ

Ձեր իրավունքները բաժնում

  • Դուք չեք կարող նոր թեմաներ ստեղծել
  • Դուք չեք կարող պատասխանել
  • Դուք չեք կարող կցորդներ տեղադրել
  • Դուք չեք կարող խմբագրել ձեր գրառումները
  •