• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Visual studio 2015 problem z kompilacją

0 głosów
113 wizyt
pytanie zadane 8 października 2016 w C i C++ przez maciek221 Początkujący (300 p.)
Witam :) mam problem z skompilowaniem programu o to jego kod

 

#include <windows.h>

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

{

    MessageBox(NULL, "To jest komunikat", "Okno komunikatu", MB_OK | MB_ICONINFORMATION);
    return 0;
}

Problem polega na tym że krzyczy o dodanie nagłówku stdafx.h ale gdy to zrobię wyskakuje kolejna masa błędów..

1 odpowiedź

0 głosów
odpowiedź 8 października 2016 przez obl Nałogowiec (45,900 p.)

Uruchom Visual Studio, utwórz nowy czysty projekt c++ WinApi, dodaj do niego plik .cpp i wklej do niego twój kod. A i jeszcze jedno, domyślnie w ustawieniach kompilatora jest ustawione używanie funkcji przyjmujących WCHAR. A więc wywołanie funkcji MessageBox powinna wyglądać tak:

MessageBox(NULL, L"To jest komunikat", L"Okno komunikatu", MB_OK | MB_ICONINFORMATION);

Albo musisz wyłączyć opcję w ustawieniach kompilatora.

komentarz 8 października 2016 przez maciek221 Początkujący (300 p.)
Okej a pomożesz mi z tym kodem ??? Problem stanowi otwarta klamra przy funkcji swith tzn ta górna

 

 

 

#include <windows.h>
LPSTR NazwaKlasy = "Klasa123";
MSG Komunikat;
LRESULT CALLBACK WndProc(HWND hwnd, UINT msg,
    WPARAM wParam, LPARAM lParam);

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

{

    WNDCLASS c;

    c.style = 0;
    c.lpfnWndProc = WndProc;
    c.cbClsExtra = 0;
    c.cbWndExtra = 0;
    c.hInstance = hInstance;
    c.hIcon = LoadIcon(NULL, IDI_APPLICATION);
    c.hCursor = LoadCursor(NULL, IDC_ARROW);
    c.hbrBackground = (HBRUSH)(COLOR_WINDOW + 1);
    c.lpszMenuName = NULL;
    c.lpszClassName = NazwaKlasy;

    RegisterClass(&c);

    HWND hWnd = CreateWindowEx(
        WS_EX_CLIENTEDGE,
        NazwaKlasy,
        "okienko",
        WS_OVERLAPPEDWINDOW,
        CW_USEDEFAULT,
        CW_USEDEFAULT,
        240, 120,
        NULL, NULL,
        hInstance, NULL);

    ShowWindow(hWnd, nCmdShow);
    UpdateWindow(hWnd);

    while (GetMessage(&Komunikat, NULL, 0, 0))
    {
        TranslateMessage(&Komunikat);
        DispatchMessage(&Komunikat);
    }
    return Komunikat.wParam;
}

{
    switch (msg)
    {
    case WM_CLOSE:
        DestroyWindow(hwnd);
        break;
    case WM_DESTROY:
        PostQuitMessage(0);
        break;
        default;
        return DefWindowProc(hwnd, msg wParam, lParam);
    }
    return 0;
}
komentarz 8 października 2016 przez obl Nałogowiec (45,900 p.)

Nagłówka funkcji ci brakuje, to nie dziwne, że się nie kompiluje:

LRESULT CALLBACK WndProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam){
    switch (msg)
    {
    case WM_CLOSE:
        DestroyWindow(hwnd);
        break;
    case WM_DESTROY:
        PostQuitMessage(0);
        break;
    default;
        return DefWindowProc(hwnd, msg wParam, lParam);
    }
    return 0;
}

 

komentarz 8 października 2016 przez maciek221 Początkujący (300 p.)
edycja 8 października 2016 przez maciek221
Okej :) teraz postanowiłem dodać okienka informacyjne w którym po wyborze pojawi się moje stworzone okno :) ale ma mały problem...

 

 

#include <windows.h>

LPSTR Klasa = "Klasa Okienka";
MSG Komunikat;

LRESULT CALLBACK komunikaty(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam);

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

{
    MessageBox(NULL, "Oto okienko informacyjne!",
        "Komunikat", NULL);
    if (UINT uDecyzja = MessageBox(NULL, "Czy chcesz zobaczyc okno Windows ?",
        "Wybor", MB_YESNO | MB_ICONQUESTION))
    {
        switch (uDecyzja)
        {
        case IDYES:
            // odpowied? pozytywna
            break;
        case IDNO:
            return 0;
            // odpowied? negatywna
            break;
        }
    }
    else
    {
{

    // WYPEŁNIANIE STRUKTURY
    WNDCLASSEX a;

    a.cbSize = sizeof(WNDCLASSEX);
    a.style = 0;
    a.lpfnWndProc = komunikaty;
    a.cbClsExtra = 0;
    a.cbWndExtra = 0;
    a.hInstance = hInstance;
    a.hIcon = LoadIcon(NULL, IDI_APPLICATION);
    a.hCursor = LoadCursor(NULL, IDC_ARROW);
    a.hbrBackground = (HBRUSH)(COLOR_WINDOW + 1);
    a.lpszMenuName = NULL;
    a.lpszClassName = Klasa;
    a.hIconSm = LoadIcon(NULL, IDI_APPLICATION);

    // REJESTROWANIE KLASY OKNA
    RegisterClassEx(&a);
    

 

    // TWORZENIE OKNA
    HWND hwnd;

    hwnd = CreateWindowEx(WS_EX_CLIENTEDGE, Klasa, "Okienko", WS_OVERLAPPEDWINDOW,
        CW_USEDEFAULT, CW_USEDEFAULT, 240, 120, NULL, NULL, hInstance, NULL);

 

    ShowWindow(hwnd, nCmdShow); // Pokaż okienko...
    UpdateWindow(hwnd);

    // Pętla komunikatów
    while (GetMessage(&Komunikat, NULL, 0, 0))
    {
        TranslateMessage(&Komunikat);
        DispatchMessage(&Komunikat);
    }
    return Komunikat.wParam;
}

// OBSŁUGA ZDARZEŃ
LRESULT CALLBACK komunikaty(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam)
{
    switch (msg)
    {
    case WM_CLOSE:
        DestroyWindow(hwnd);
        break;

    case WM_DESTROY:
        PostQuitMessage(0);
        break;

    default:
        return DefWindowProc(hwnd, msg, wParam, lParam);
    }

    return 0;
}

 

Nie mogę dodać okienek z informacjami które po wyborze spowoduję wyświetlenia się mojego okna..

Podobne pytania

0 głosów
2 odpowiedzi 1,030 wizyt
0 głosów
2 odpowiedzi 206 wizyt
pytanie zadane 17 października 2016 w C i C++ przez maciek221 Początkujący (300 p.)
0 głosów
1 odpowiedź 337 wizyt
pytanie zadane 16 października 2015 w C i C++ przez Wojtek Sala Początkujący (490 p.)
Porady nie od parady
Komentarze do pytań nie służą do odpowiadania, od tego jest wydzielona sekcja odpowiedzi. Funkcją komentarzy jest natomiast możliwość uzyskania dodatkowych informacji na temat samego posta.Komentarze

62,398 zapytań

108,540 odpowiedzi

226,577 komentarzy

35,629 pasjonatów

Przeglądających: 160
Pasjonatów: 3 Gości: 157

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto dwie polecane książki warte uwagi. Pełną listę znajdziesz tutaj.

...