• 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
116 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,940 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,940 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,039 wizyt
0 głosów
2 odpowiedzi 212 wizyt
pytanie zadane 17 października 2016 w C i C++ przez maciek221 Początkujący (300 p.)
0 głosów
1 odpowiedź 341 wizyt
pytanie zadane 16 października 2015 w C i C++ przez Wojtek Sala Początkujący (490 p.)
Porady nie od parady
Nie wiesz jak poprawnie zredagować pytanie lub pragniesz poznać którąś z funkcji forum? Odwiedź podstronę Pomoc (FAQ) dostępną w menu pod ikoną apteczki.FAQ

64,934 zapytań

111,406 odpowiedzi

234,471 komentarzy

46,767 pasjonatów

Przeglądających: 118
Pasjonatów: 0 Gości: 118

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.

...