Prikazujem rezultate 1 do 13 od 13

Tema: Tutorial Izrada Jednostavnog Windows Programa

  1. #1
    Senior Member Lock'n'Load
    Datum registracije
    Apr 2008
    Lokacija
    Wrapchester City
    Postova
    190

    Tutorial Izrada Jednostavnog Windows Programa

    Uđite u vas C++ program i odite >>New Source datoteka i kad vam se otvori prozor upisite kod:
    Code:
    *------------------------------------------------------
    
    CW11.c - Program koji na ekranu monitora ispisuje poruku
    
    ------------------------------------------------------*/
    
     
    
    #include <Windows.h>
    
    int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR szCmdLine, int nCmdShow)
    {
    
      /*Funkcija koja ispisuje poruku u prozoru i ime prozora */
    
    
            MessageBox (NULL, "Pozdrav, ja sam vaš prvi C Windows program ,yo buraz!", "Jednostavna poruka", 0);     
    
     
    
            return 0;
    }

    Opis djelov programa:
    -# /* */S- sve što se nalazi između ova dva znaka jest komentar unutar C programa.
    -# #includeS- naputak kojim se u program uključuju datoteke.
    -<Windows.h>S- zaglavna datoteka koja se uključuje u svaki Windows program. Sadrži definicije mnoštva drugih zaglavnih datoteka u kojima se nalaze definicije funkcija neophodnih za rad Windows programa.
    -# WinMain()S- osnovna funkcija koju mora imati svaki Windows program (kao Main u C programu). Ova funkcija rabi niz poziva definiran za WINAPI i nakon što obavi posao vraća cijeli (int) broj. Parametri funkcije WinMain su:
    - hInstance - tzv. "rukovatelj prozora". To je broj koji označava program koji se izvodi pod Windowsima. Ako korisnik pokrene više kopija istog programa, svaka od njih ima drugu vrijednost hInstance.
    - hPrevInstance - tzv. "prethodni primjerak prozora" danas nije više u uporabi, ali je zadržan zbog ranijih verzija Windowsa. On je pokazivač na neposredni prethodni primjerak prozora koji je još uvijek aktivan. Prije nego što bi se mogla učitati bilo koja kopija programa vrijednost ovog parametra morala je biti NULL. Kod Win32 programa vrijednost ovog parametra uvijek je NULL.
    - lpCmdLine - pokazivač je na string koji završava NULL znakom. Ovaj string sadrži bilo koje parametre koji dolaze od naredbenog retka kojim možete pokrenuti Windows program iz DOS-a.
    - nCmdShow - broj je koji pokazuje kako će pripadajući prozor biti prikazan na ekranu (minimalan, maksimalan, skriven...). Ovo će vam postati jasnije u ostalim primjerima iz knjige jer prozor s porukom nema ovakve opcije.
    -MessageBox() - funkcija koja na ekranu monitora prikazuje prozor s porukom (MessageBox). Ova funkcija ima četiri parametra:
    - hWnd - označava prozor kojem prozor s porukom pripada. Ako je ovaj parametar NULL prozor s porukom nema vlasnika.
    - szText - tekst koji će biti ispisan unutar prozora s porukom.
    - szCaption - tekst koji će biti u okviru naslova (Titlebar) prozora.
    - uType - ovaj parametar određuje stil (style) poruke s prozorom, tj. je li to upozorenje, poruka o greški itd. te koje će gumbe sadržavati. Ako je ovaj parametar "0", prozor s porukom sadržavat će gumb "OK" i neće imati nikakvu ikonu.
    http://www.ubizeccorporation.bloger.hr/ Gaming and PC
    YO Buraz Madafaka!

  2. #2
    Senior Member Nuke me please
    Datum registracije
    Jan 2007
    Postova
    283

    Re: Tutorial Izrada Jednostavnog Windows Programa

    bravo... nadam se stickyu
    It's time to kick some ass...

  3. #3
    Senior Member Lord of The Fleas
    Datum registracije
    Jan 2007
    Lokacija
    /dev /null
    Postova
    412

    Re: Tutorial Izrada Jednostavnog Windows Programa

    Jako lijepo! A kako napraviti prozor sa gumbićima, sliderima i takvim stvarima?

  4. #4
    Senior Member Lock'n'Load
    Datum registracije
    Apr 2008
    Lokacija
    Wrapchester City
    Postova
    190

    Re: Tutorial Izrada Jednostavnog Windows Programa

    Izrada Prozora
    Code:
    /*---------------------------------------------
    
    CW21.c - PROTOTIP PROZORA - program koji kreira jednostavan prozor
    
    ---------------------------------------------*/
    
     
    
    #include <Windows.h>
    
     
    
    /* Prototip funkcije s Windows procedurama */
    
     
    
    LRESULT CALLBACK WindowProcedure(HWND, UINT, WPARAM, LPARAM);
    
     
    
    /* Ime klase prozora */
    
     
    
    static char gszClassName[]S = "MojaKlasaProzora";
    
     
    
    /* Funkcija WinMain */
    
     
    
    int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow) {
    
          WNDCLASSEX WndClass;
    
          HWND hwnd;
    
          MSG Msg;
    
     
    
          /* Registriranje klase prozora */
    
     
    
          WndClass.cbSize        = sizeof(WNDCLASSEX);
    
          WndClass.style         = NULL;
    
          WndClass.lpfnWndProc   = WindowProcedure;
    
          WndClass.cbClsExtra    = 0;
    
          WndClass.cbWndExtra    = 0;
    
          WndClass.hInstance     = hInstance;
    
          WndClass.hIcon         = LoadIcon(NULL, IDI_APPLICATION);
    
          WndClass.hCursor       = LoadCursor(NULL, IDC_ARROW);
    
          WndClass.hbrBackground = (HBRUSH)(COLOR_WINDOW);
    
          WndClass.lpszMenuName  = NULL;
    
          WndClass.lpszClassName = gszClassName;
    
          WndClass.hIconSm       = LoadIcon(NULL, IDI_APPLICATION);
    
     
    
          /* Provjera je li klasa prozora registrirana */
    
     
    
          if(!RegisterClassEx(&WndClass)) {
    
                MessageBox(0, "Registriranje prozora nije uspjelo!", "Greška!", MB_ICONSTOP | MB_OK);
    
                return 0;
    
          }
    
     
    
          /* Kreiranje prozora */
    
     
    
          hwnd = CreateWindowEx(
    
                    WS_EX_STATICEDGE,
    
                    gszClassName,
    
                    "Naslov",
    
                    WS_OVERLAPPEDWINDOW,
    
                    CW_USEDEFAULT, CW_USEDEFAULT,
    
                    500, 400,
    
                    NULL, NULL,
    
                    hInstance,
    
                    NULL);
    
     
    
          /* Provjera je li prozor uspješno kreiran */
    
     
    
          if(hwnd == NULL) {
    
                MessageBox(0, "Kreiranje prozora nije uspjelo!", "Greška!", MB_ICONSTOP | MB_OK);
    
                return 0;
    
          }
    
     
    
          /* Prikazivanje prozora na ekranu */
    
     
    
          ShowWindow(hwnd, nCmdShow);
    
          UpdateWindow(hwnd);
    
     
    
          /* Petlja koja obrađuje poruke */
    
     
    
          while(GetMessage(&Msg, NULL, 0, 0)) {
    
                TranslateMessage(&Msg);
    
                DispatchMessage(&Msg);
    
          }
    
     
    
          /* Odjava klase prozora */
    
     
    
          UnregisterClass("MojaKlasaProzora",hInstance);
    
     
    
          return Msg.wParam;
    
    }
    
     
    
    /* Funkcija s Windows procedurama */
    
     
    
    LRESULT CALLBACK WindowProcedure(HWND hwnd, UINT Message, WPARAM wParam, LPARAM lParam) {
    
          switch(Message) {
    
                case WM_CLOSE:
    
                      DestroyWindow(hwnd);
    
                      break;
    
                case WM_DESTROY:
    
                      PostQuitMessage(0);
    
                      break;
    
                default:
    
                      return DefWindowProc(hwnd, Message, wParam, lParam);
    
          }
    
     
    
          return 0;
    
    }

    Evo kako je inicijaliziran jednostavan prozor iz primjera
    :



    hwnd = CreateWindowEx(


    WS_EX_STATICEDGE - stil prozora definiran identifikatorom WS_EX_STATICEDGE. Objašnjenje identifikatora možete naći pri kraju poglavlja.

    gszClassName - registrirano ime klase prozora je "MojaKlasaProzora"

    "Naslov" - tekst koji se pojavljuje u naslovu programa

    WS_OVERLAPPEDWINDOW - stil prozora definiran identifikatorom WS_OVERLAPPEDWINDOW

    CW_USEDEFAULT - x-koordinata gornjeg lijevog ugla definirana identifikatorom CW_USEDEFAULT

    CW_USEDEFAULT - y-koordinata gornjeg lijevog ugla definirana identifikatorom CW_USEDEFAULT

    500 - širina prozora u pikselima

    400 - visina prozora u pikselima

    NULL - ako prozor ne pripada drugom prozoru (roditeljskom) ovaj parametar ima vrijednost NULL.

    NULL - ako prozor nema izbornik ili nije prozor-potomak ovaj parametar ima vrijednost NULL.

    hInstance - rukovatelj pokazuje na aktivni prozor

    NULL - ovaj parametar ima vrijednost NULL, osim ako definirate svoju strukturu.
    http://www.ubizeccorporation.bloger.hr/ Gaming and PC
    YO Buraz Madafaka!

  5. #5
    Senior Member Lord of The Fleas
    Datum registracije
    Jan 2007
    Lokacija
    /dev /null
    Postova
    412

    Re: Tutorial Izrada Jednostavnog Windows Programa

    Jako lijepo! Sad još gumbiće i ja sretan

  6. #6
    Senior Member Nuke me please
    Datum registracije
    Jan 2007
    Postova
    283

    Re: Tutorial Izrada Jednostavnog Windows Programa

    eh... do gumbica... nisu teski...

    gore kod includea napravis
    Code:
    #define IDC_GUMB         21
    onda ovo ispod "MojaKlasaProzora"
    Code:
    HINSTANCE hInst = NULL;
    ovo iznad WndClass.cbSize = sizeof(WNDCLASSEX);
    Code:
    hInst = hInstance;
    ovo kod switch message...
    Code:
    HWND hGumb;
    Code:
    case WM_CREATE :
                    
                    /* Kreiranje gumba */
                    
               hGumb = CreateWindowEx(0,
                               "Button",
                               "About...",
                               WS_CHILD  |  WS_VISIBLE,
                               400,
                               330,
                               80,
                               30,
                               hwnd,
                                (HMENU)  IDC_GUMB,
                                hInst,
                                NULL);
                                
               /* Provjera je li kontrola uspješno kreirana */
               
               if(!hGumb)   {
                              MessageBox(0, "Kreiranje gumba nije uspjelo", "Greška",  MB_ICONSTOP  |  MB_OK);
                              return 0;
                              }
    ontopic prerasiren kod

    btw tucakovic?
    It's time to kick some ass...

  7. #7
    Senior Member Lord of The Fleas
    Datum registracije
    Jan 2007
    Lokacija
    /dev /null
    Postova
    412

    Re: Tutorial Izrada Jednostavnog Windows Programa

    I kako ću sada napraviti da mi kad pritisnem gumb dođe MessageBox sa nekim textom?

  8. #8
    Senior Member Nuke me please
    Datum registracije
    Jan 2007
    Postova
    283

    Re: Tutorial Izrada Jednostavnog Windows Programa

    Code:
                    case WM_COMMAND:          
                              switch(wParam)
    				 {
    				  	case IDC_GUMB: 
    						 MessageBox(0, "Programmed by: fps_gamer", "About...", MB_OK);
                              return 0;
    						 }
    to dode ispod onog gore koda
    It's time to kick some ass...

  9. #9

    Re: Tutorial Izrada Jednostavnog Windows Programa

    Uff... ovo su poprilično stare tehnologije (bez uvrede). Zašto se uopće mučiš definicijom prozora kroz klasu, a kamoli deklariranjem identifikatora za objekte i objektnim mapama kad imaš razvojna okruženja poput C++ builder-a koja to imaju integrirano i preko IDE-a tj. form editora automatski za tebe pišu definiciju klase i sve event handlere? Štoviše, automatski ti dopišu i prazna tijela event funkcija
    AMD Athlon 64, 6000+ X2
    4 GB Ram 800 MHZ
    8800 GT, 1GB

    http://www.programiranje.big-forum.net

  10. #10
    Senior Member Nuke me please
    Datum registracije
    Jan 2007
    Postova
    283

    Re: Tutorial Izrada Jednostavnog Windows Programa

    tako je veci gust... sta nije??
    It's time to kick some ass...

  11. #11

    Re: Tutorial Izrada Jednostavnog Windows Programa

    = Citat = Izvorno postao fps_gamer
    tako je veci gust... sta nije??
    pa sad... ovisi što radiš. ako je riječ o ovako nečem jednostavno može biti, no zamisli aplikaciju od 15ak prozora s nekim minimalnim funkcionalnostima. ovdje bi se nagomilalo par kilometara koda, i nedao Bog da je negdje neka logička greška jer bi netko proveo vesele noći analizirajući sav taj kod

    Ovo o čemu ti pišeš je klasični MFC pristup tj. realizacija windows aplikacija kroz čiste klase, no malo pogledaj i konkurentska rješenja jer umjesto ovakvih klasa koriste biblioteke tj. design-time i run-time komponente što 10ak puta ubrzava pisanje aplikacija
    AMD Athlon 64, 6000+ X2
    4 GB Ram 800 MHZ
    8800 GT, 1GB

    http://www.programiranje.big-forum.net

  12. #12
    Senior Member Nuke me please
    Datum registracije
    Jan 2007
    Postova
    283

    Re: Tutorial Izrada Jednostavnog Windows Programa

    ma... ja nemam velike projekte sa win programiranjem za sada... dosta komplicirano... tj. puno koda...
    It's time to kick some ass...

  13. #13
    Senior Member Lock'n'Load
    Datum registracije
    Apr 2008
    Lokacija
    Wrapchester City
    Postova
    190

    Re: Tutorial Izrada Jednostavnog Windows Programa

    Gle ko oce programirat mora se mucit(ak nezna) .Svaka aplikacija ili igra sadrzi puno puno kodova zato i postoje Timovi koji to rade po mjesecima i godinama jel dobr djelo ne nastaje preko noći(ova je dobra dobra )!
    http://www.ubizeccorporation.bloger.hr/ Gaming and PC
    YO Buraz Madafaka!

Slične teme

  1. Tutorial za Victoriu
    By Torpedo in forum Pomagaj brate!
    Odgovora: 1
    Posljednji post: 02-08-2010, 04:00
  2. [Tutorial] FMOD C++
    By SkunK in forum Programiranje i izrada igara
    Odgovora: 18
    Posljednji post: 01-07-2010, 21:46
  3. [Tutorial] C++
    By RayDX in forum Programiranje i izrada igara
    Odgovora: 85
    Posljednji post: 11-10-2009, 17:45
  4. [Tutorial] OpenGL through C++
    By RayDX in forum Programiranje i izrada igara
    Odgovora: 6
    Posljednji post: 21-11-2008, 17:02
  5. [Tutorial] DirectX through C++
    By RayDX in forum Programiranje i izrada igara
    Odgovora: 55
    Posljednji post: 25-09-2008, 13:02

Pravila postanja

  • Ne možeš stvarati nove teme
  • Ne možeš odgovarati na postove
  • Ne možeš slati privitke
  • Ne možeš mijenjati svoje postove
  •