Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

[C++] [SDL2] - funkcja SDL_CreateWindow nie działa, przez co cały program nie działa

Ostatnio zmodyfikowano 2016-12-09 21:24
Autor Wiadomość
pealike
Temat założony przez niniejszego użytkownika
[C++] [SDL2] - funkcja SDL_CreateWindow nie działa, przez co cały program nie działa
» 2016-12-09 21:24:05
Witam,
problem jest szybki i moim zdaniem szybki do załatwienia, ale ja za nic nie mogę go znaleźć.
Otóż chodzi o to, że w funkcji "SDL_CreateWindow ("SDL2Test",SDL_WINDOWPOS_CENTERED,SDL_WINDOWPOS_CENTERED,800,600,NULL);"
w ostatnim argumencie, gdzie dałem "NULL", Bulid log podaje, że tam nic niema, ale jako Warning.
Wtedy, gdy uruchamiam program, okno pokazuje "Program SDL2.exe przestał działać", i później w konsoli pokazuje komunikat:
-1073741819 (0xC0000005)

C:\Users\piotr\Desktop\programowanie\sdl2\main.cpp:24:99: warning: passing NULL to non-pointer argument 6 of 'SDL_Window* SDL_CreateWindow(const char*, int, int, int, int, Uint32)' [-Wconversion-null]
     okno = SDL_CreateWindow ("SDL2Test",SDL_WINDOWPOS_CENTERED,SDL_WINDOWPOS_CENTERED,800,600,NULL);
Gdy z "NULL" dałem na np. "SDL_WINDOW_RESIZABLE", warning zniknął, ale nadal jest zawiecha, i nadal jest komunikat w konsoli.
Moje pytanie jest takie: Jak to wyeliminować? Otóż przed włączeniem innego projektu i powrotu do tego z SDL2, wszystko było okej, natomiast gdy włączyłem program i potem wróciłem do tego, był już ten problem. Zaznaczam, że program, który włączyłem, był zabugowany i również tam wyskakiwał taki błąd.

Zamieszczam cały kod:
C/C++
#include <iostream>
#include <SDL2/SDL_image.h>
#include <SDL2/SDL_ttf.h>
#include <SDL2/SDL_mixer.h>
#include <windows.h>
#include <stdint.h>

using namespace std;

SDL_Window * okno;
SDL_Surface * ekran;

SDL_Event zdarzenie;
SDL_Rect rect1;
SDL_Rect rect2;
int frame = 0;
int posX = 100;
int posY = 100;

int main( int argc, char * args[] )
{
    SDL_Init( SDL_INIT_EVERYTHING );
   
    okno = SDL_CreateWindow( "SDL2Test", SDL_WINDOWPOS_CENTERED, SDL_WINDOWPOS_CENTERED, 800, 600, NULL );
   
    ekran = SDL_GetWindowSurface( okno );
   
   
    for(;; )
    {
        if( frame == 0 )
        {
            // grafika, obiekty, wklejanie ich
            SDL_Surface * tlo = IMG_Load( "grafika/sdl2.bmp" );
            SDL_Surface * postac = IMG_Load( "grafika/postac.bmp" );
           
           
            while( frame == 0 )
            { // scena 1
                //sterowanie
                if( GetAsyncKeyState( VK_LEFT ) )
                {
                    posX = posX - 5;
                }
                if( GetAsyncKeyState( VK_RIGHT ) )
                {
                    posX = posX + 5;
                }
                if( GetAsyncKeyState( VK_UP ) )
                {
                    posY = posY - 5;
                }
                if( GetAsyncKeyState( VK_DOWN ) )
                {
                    posY = posY + 5;
                }
                // przejscie scena 2
                if( GetAsyncKeyState( VK_ESCAPE ) )
                {
                    frame = 1;
                }
                // renderowanie obiektow
                rect2.x = 0;
                rect2.y = 0;
                SDL_BlitSurface( tlo, NULL, ekran, & rect2 );
               
                rect2.x = posX;
                rect2.y = posY;
                rect2.w = 256;
                rect2.h = 128;
                SDL_BlitScaled( postac, NULL, ekran, & rect2 );
                // malo-potrzebne
                // FPS'y
                SDL_UpdateWindowSurface( okno );
                SDL_Delay( 16.666666 );
                // zamykanie okna
                while( SDL_PollEvent( & zdarzenie ) )
                {
                    if( zdarzenie.type == SDL_QUIT )
                    {
                        return 0;
                    }
                }
                // usuwanie
                SDL_FreeSurface( tlo );
                SDL_FreeSurface( postac );
            }
        }
        if( frame == 1 )
        {
            // grafika, obiekty, wklejanie ich
            SDL_Surface * tlo1 = IMG_Load( "grafika/postac.bmp" );
            while( frame == 1 )
            { // scena 2
                // renderowanie obiektow
                rect2.x = 0;
                rect2.y = 0;
                rect2.w = 800;
                rect2.h = 600;
                SDL_BlitScaled( tlo1, NULL, ekran, & rect2 );
                // malo potrzebne
                // zamykanie okna
                while( SDL_PollEvent( & zdarzenie ) )
                {
                   
                    if( zdarzenie.type == SDL_QUIT )
                    {
                        return 0;
                    }
                }
                // FPS'y
                SDL_UpdateWindowSurface( okno );
                SDL_Delay( 16.666666 );
                // usuwanie
                SDL_FreeSurface( tlo1 );
            }
        }
    }
   
   
   
   
   
    return 0;
}
P-154703
« 1 »
  Strona 1 z 1