logo elektroda
logo elektroda
X
logo elektroda
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

Jak stworzyć aplikację okienkową w C++ na Windows?

22 Lip 2005 23:50 1292 7
  • #1 1674765
    Konto nie istnieje
    Poziom 1  
  • #2 1674777
    HIOB
    Poziom 17  
    Posty: 222
    Pomógł: 23
    Ocena: 1
    CZESC!!
    MASZ CZARME OKIENKO, BO PISZESZ PROGRAMY POD KONSOLA!!
    WYBIERZ NA POCZATKU (W ZALEZNOSCI OD WERSJI C++) - APLIKACIE (NP WIN32)!!
  • #3 1674813
    Konto nie istnieje
    Poziom 1  
  • Pomocny post
    #4 1674839
    HIOB
    Poziom 17  
    Posty: 222
    Pomógł: 23
    Ocena: 1
    O KURDE :)
    NAWET NIE WIEM CZY TAK SIE DA :)

    PO PROSTU ZALAT SOBIE COS W RODZAJU VISUAL C++ :)
    ALBO JEDEN Z WIELU INNYCH KOMPILATOROW :)

    Dodano po 12 [minuty]:

    TUTAJ ZAPODAJE CI KILKA LINKÓW:

    KURSY C++
    http://www.programuj.com/download.php
    http://lew.tu.koszalin.pl/~abernat/polish/wprcpp.htm
    http://binboy.sphere.pl/index.php?show=33

    KSIAZKI ZWIAZANE Z C++:
    http://www.lideria.pl/sklep/szukaj_kat?id_t=33&id_g=36

    A TAKIE COS SOBIE ZALATW :)
    http://www.acris.pl/produkt.jsp?pid=2960
    ...CHOC MOIM ZDANIEM WYSTARCZY CI WERSJA 6.0

    PS. SA ROZNE PROGRAMY DO SCIAGANIA TYPU P2P :)

    POZDRAWIAM :)



    Moderowany przez tomaszo:

    Ostrzezenie za pisanie postow wielkimi literami...Niedlugo skonczy sie cierpliwosc niektorych i sie rozstaniemy z mozliwoscia pisania.

  • #5 1675281
    trivial1
    Poziom 20  
    Posty: 274
    Pomógł: 36
    Ocena: 61
    A ja Ci proponuje ściągnąć z sieci Dev-C++ (freeware), używa on kompilatora MinGW i możesz pisać sobie na spokojnie aplikacje 32bit.
    A tu masz przykładowy kod na program, który wyświetla same okno:
    
    #include <windows.h>
    
    /*  Declare Windows procedure  */
    LRESULT CALLBACK WindowProcedure (HWND, UINT, WPARAM, LPARAM);
    
    /*  Make the class name into a global variable  */
    char szClassName[ ] = "WindowsApp";
    
    int WINAPI WinMain (HINSTANCE hThisInstance,
                        HINSTANCE hPrevInstance,
                        LPSTR lpszArgument,
                        int nFunsterStil)
    
    {
        HWND hwnd;               /* This is the handle for our window */
        MSG messages;            /* Here messages to the application are saved */
        WNDCLASSEX wincl;        /* Data structure for the windowclass */
    
        /* The Window structure */
        wincl.hInstance = hThisInstance;
        wincl.lpszClassName = szClassName;
        wincl.lpfnWndProc = WindowProcedure;      /* This function is called by windows */
        wincl.style = CS_DBLCLKS;                 /* Catch double-clicks */
        wincl.cbSize = sizeof (WNDCLASSEX);
    
        /* Use default icon and mouse-pointer */
        wincl.hIcon = LoadIcon (NULL, IDI_APPLICATION);
        wincl.hIconSm = LoadIcon (NULL, IDI_APPLICATION);
        wincl.hCursor = LoadCursor (NULL, IDC_ARROW);
        wincl.lpszMenuName = NULL;                 /* No menu */
        wincl.cbClsExtra = 0;                      /* No extra bytes after the window class */
        wincl.cbWndExtra = 0;                      /* structure or the window instance */
        /* Use Windows's default color as the background of the window */
        wincl.hbrBackground = (HBRUSH) COLOR_BACKGROUND;
    
        /* Register the window class, and if it fails quit the program */
        if (!RegisterClassEx (&wincl))
            return 0;
    
        /* The class is registered, let's create the program*/
        hwnd = CreateWindowEx (
               0,                   /* Extended possibilites for variation */
               szClassName,         /* Classname */
               "Windows App",       /* Title Text */
               WS_OVERLAPPEDWINDOW, /* default window */
               CW_USEDEFAULT,       /* Windows decides the position */
               CW_USEDEFAULT,       /* where the window ends up on the screen */
               544,                 /* The programs width */
               375,                 /* and height in pixels */
               HWND_DESKTOP,        /* The window is a child-window to desktop */
               NULL,                /* No menu */
               hThisInstance,       /* Program Instance handler */
               NULL                 /* No Window Creation data */
               );
    
        /* Make the window visible on the screen */
        ShowWindow (hwnd, nFunsterStil);
    
        /* Run the message loop. It will run until GetMessage() returns 0 */
        while (GetMessage (&messages, NULL, 0, 0))
        {
            /* Translate virtual-key messages into character messages */
            TranslateMessage(&messages);
            /* Send message to WindowProcedure */
            DispatchMessage(&messages);
        }
    
        /* The program return-value is 0 - The value that PostQuitMessage() gave */
        return messages.wParam;
    }
    
    
    /*  This function is called by the Windows function DispatchMessage()  */
    
    LRESULT CALLBACK WindowProcedure (HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
    {
        switch (message)                  /* handle the messages */
        {
            case WM_DESTROY:
                PostQuitMessage (0);       /* send a WM_QUIT to the message queue */
                break;
            default:                      /* for messages that we don't deal with */
                return DefWindowProc (hwnd, message, wParam, lParam);
        }
    
        return 0;
    }
    

    Program sie kompiluje bez błędów w Dev-C++ i nie wiem jak inne kompilatory sobie poradzą ale myślę, że nie powinno być problemu.
    Ale jeśli jesteś początkującym w c++, to radzę Ci się wpierw dobrze nauczyć podstaw (zmienne, klasy, tablice etc.). Bo programowanie pod windows nie jest takie proste. Masz, znalazłem jakiegoś linka nt. pisania pod winde: www.winprog.org
    Pozdro...8)
  • #6 1675937
    elektryk
    Poziom 42  
    Posty: 11029
    Pomógł: 439
    Ocena: 240
    trivial1 napisał:
    A tu masz przykładowy kod na program, który wyświetla same okno:
    Program ten tworzy okno w oparciu o WinAPI, np Visual Studio posiada edytor graficzny do rysowania okienek.
  • #7 1676967
    trivial1
    Poziom 20  
    Posty: 274
    Pomógł: 36
    Ocena: 61
    Ale co ma piernik do wiatraka ?? ..chcial zeby mu powiedziec jak sie pisze program windowsowy to mu podalem kod. :/ A co do "np Visual Studio posiada edytor graficzny do rysowania okienek." to pewnie to tworzy dialogi, gotowe okna ...czyli ma gotowy plik .rc (o ile jesli takowy jest tworzony ..nie uzywalem VS). Wiec jesli chce sie uczyc pisac pod winde, to niech sam pisze okno i obsluge jego ..a pozniej dodatkowe dialogi etc.
  • #8 1977793
    Konto nie istnieje
    Poziom 1  

Podsumowanie tematu

✨ Dyskusja dotyczy tworzenia aplikacji okienkowych w C++ na system Windows, zamiast programów konsolowych. Podkreślono, że aby uzyskać okienkowy interfejs, należy wybrać typ projektu Win32 Application zamiast konsolowego. Zalecane jest korzystanie z nowoczesnych środowisk programistycznych, takich jak Visual C++ lub darmowy Dev-C++ z kompilatorem MinGW, które ułatwiają tworzenie aplikacji 32-bitowych z interfejsem graficznym. Przykładowo podano kod wykorzystujący WinAPI do stworzenia prostego okna. Wspomniano także o edytorze graficznym okien w Visual Studio, który generuje pliki zasobów (.rc), jednak dla nauki programowania okienkowego warto samodzielnie pisać obsługę okien i zdarzeń. Podano linki do kursów i książek dotyczących C++ oraz sugestie dotyczące narzędzi i kompilatorów.
Wygenerowane przez model językowy.
REKLAMA