Pokaż wiadomości

Ta sekcja pozwala Ci zobaczyć wszystkie wiadomości wysłane przez tego użytkownika. Zwróć uwagę, że możesz widzieć tylko wiadomości wysłane w działach do których masz aktualnie dostęp.


Wiadomości - kon

Strony: [1] 2 3
1
SDL / Odp: Znikające grafiki po użyciu okna WinAPI
« dnia: Marzec 08, 2009, 03:05:18 »
Działa :D Jak narazie dobrze. Dzięki za pomoc :D

2
SDL / Odp: Znikające grafiki po użyciu okna WinAPI
« dnia: Marzec 08, 2009, 02:13:45 »
A mógłbyś mi poradzić, co to może być za zmienna??

Nie mam pojęcia nawet, jak może się nazywać...

3
SDL / Odp: Znikające grafiki po użyciu okna WinAPI
« dnia: Marzec 08, 2009, 02:02:40 »
racja, taka grafika nie ginie. Ale dlaczego do cholery?? Poza tym, chciałem, żeby mój program nie musiał być w c:\\itd
tylko żeby można było go usadowić go w dowolnym katalogu

4
SDL / Odp: Znikające grafiki po użyciu okna WinAPI
« dnia: Marzec 08, 2009, 01:27:18 »
No właśnie! I jak tutaj temu zaradzić?

5
SDL / Odp: Znikające grafiki po użyciu okna WinAPI
« dnia: Marzec 08, 2009, 00:51:45 »
DWORD blad;
if(GetOpenFileName(&ofn))
{
  blad = CommDlgExtendedError();
  cerr << blad;
  return 1;
}
else
{
  return 0;
}


Odpowiedź jest "0"...

6
SDL / Odp: Znikające grafiki po użyciu okna WinAPI
« dnia: Marzec 08, 2009, 00:28:33 »
Typem tego okna jest bool, więc po tym czy to jest true lub false to dużo się nie dowiem...

To też jest tak mądrze zaplanowane, bo tak jak mówisz powinno być int i byloby git. Ale cóż...

7
SDL / Odp: Znikające grafiki po użyciu okna WinAPI
« dnia: Marzec 08, 2009, 00:10:20 »
1. To było z gotowca Dark Cult ;)
2. Tablica też jest rodzajem wskaźnika, więc...


Chyba, że masz jakiś pomysł, jak to poprawić, to chętnie zobaczę.

8
SDL / Odp: Znikające grafiki po użyciu okna WinAPI
« dnia: Marzec 07, 2009, 23:46:22 »
Przeczytałem i zrobiłem coś takiego:

OPENFILENAME ofn;

int watek_odczytu(void *data)
{
 if(GetOpenFileName(&ofn))
 {
  return 1;
 }
 else
 {
  return 0;
 }
}

int window_open_image(HINSTANCE hThisInstance, HINSTANCE hPrevInstance, LPSTR lpszArgument, int nFunsterStil)
{
 SDL_Thread *watek = NULL;
 ZeroMemory(&ofn,sizeof(ofn));
 ofn.lStructSize = sizeof(OPENFILENAME);
 ofn.hwndOwner = stare;
 ofn.lpstrFilter = "Obraz PNG\0*.png\0Obraz JPEG\0*.jpg;*.jpeg\0Bitmapy BMP\0*.bmp\0";
 char sNazwaPliku[4096] = " ";
 ofn.nMaxFile = 4096;
 ofn.lpstrFile = sNazwaPliku;
 ofn.lpstrDefExt = "png";
 ofn.Flags = OFN_FILEMUSTEXIST | OFN_HIDEREADONLY;
 if(SDL_CreateThread(watek_odczytu,NULL))
 {
  SDL_KillThread(watek);
 }
}

Ale efekt nie jest w ogóle inny... To samo... ale to też nie za bardzo rozumiem o co chodzi w wątkach, ale nie chciałbym narazie się w tym zagłębiać... Priorytetem narazie jest tylko okno OFN

9
SDL / Odp: Znikające grafiki po użyciu okna WinAPI
« dnia: Marzec 07, 2009, 17:52:58 »
Nie wiedziałem dokładnie, do jakiej grupy przypisać ten post. Że w większości chodzi tutaj o SDL, to spróbowałem tutaj. Jezeli któryś z modów uważa, że powinno być inaczej, to niech czyni swoją powinność...

W każdym razie masz jakiś pomysł z tym programsem??

10
SDL / Odp: Znikające grafiki po użyciu okna WinAPI
« dnia: Marzec 07, 2009, 13:46:33 »
Zauważyłem coś bardzo interesującego, co na pewno jest związane z tym problemem:

1. Kiedy anuluję okno w "Otwórz jako" nic się nie dzieje głupiego w programie. Jednakże kiedy je potwierdzam zaczyna się zabawa. A to od tego tylko tym, że jest zwracana inna wartość:

ofn.hwndOwner = stare;
     ofn.lpstrFilter = "Obraz PNG\0*.png\0Obraz JPEG\0*.jpg;*.jpeg\0Bitmapy BMP\0*.bmp\0";
     char sNazwaPliku[4096] = " ";
     ofn.nMaxFile = 4096;
     ofn.lpstrFile = sNazwaPliku;
     ofn.lpstrDefExt = "png";
     ofn.Flags = OFN_FILEMUSTEXIST | OFN_HIDEREADONLY;
     //               
     //           /       Tutaj
     //        |/_
     //
     if(GetOpenFileName(&ofn))
     {
      return 1;
     }
     else
     {
      return 0;
     }

  Więc podejrzewam, że jest to coś związanego z "ofn.lpstrFile = sNazwaPliku;" albo całą strukturą ofn.

2. Problem pojawia się w trakcie, gdy GetOpenFileName(&ofn) równa się true, a nie wtedy, gdy kończy się funkcja open_image() (czyli notabena ta, w której znajduje się to okienko). Więc może być coś nie tak z oknem OFN (Ołpen Fajl Nejm).

3. Sprawdziłem też dokładnie, na czym polega błąd "znikania obrazków". Po prostu z jakiegoś powodu nie ładują informacji z pliku, ale tylko w funkcjach, które wczytują obrazki "na żywo", czyli kiedy obrazy (i dźwięki!!) nie są w pamięci na stale, tylko za każdym razem są wczytywane z pliku. Dlatego czcionki i niektóre grafiki działają normalnie, ponieważ zostały wczytane do pamięci na samym początku i nie były z niej wymazywane. Sprawdziłem to w taki sposób:

SDL_Surface *load_image(char nazwa_obrazu[])
{
 //wskaźnikiniki do struktur obrazu

 SDL_Surface *loadedImage = NULL;
 SDL_Surface *optymalizedImage = NULL;

 //wczytanie obrazu

 loadedImage = IMG_Load((char*)nazwa_obrazu);

 //jeżeli obraz się wczyta, to należy sformatować go do możliwości monitora

 if (loadedImage != NULL)
 {
  optymalizedImage = SDL_DisplayFormat(loadedImage);
  SDL_FreeSurface(loadedImage);
 }
 else
 {
  cerr << "Error with open file";
 }
 //zwraca obraz
  if(optymalizedImage != NULL)
 {
  Uint32 colorkey = SDL_MapRGB(optymalizedImage->format,0,0,1);
  SDL_SetColorKey(optymalizedImage, SDL_SRCCOLORKEY|SDL_RLEACCEL,colorkey);
 }
 else
 {
  cerr << "Error with optymalized";
 }
 return optymalizedImage;
}

Kiedy okno OFN nie było włączone, wszystko działało normalnie. Jednak kiedy to zrobiłem, w konsoli wyświetlało mi się to:

Error with open fileError with optymalizedError with open fileError with optymalizedError with open fileError with optymalizedError with open fileError with optymalizedError with open fileError with optymalizedError with open fileError with optymalizedError with open fileError with optymalizedError with open fileError with optymalizedError with open fileError with optymalizedError with open fileError with optymalizedError with open fileError with optymalizedError with open fileError with optymalizedError with open fileError with optymalizedError with open fileError with optymalizedError with open fileError with optymalizedError with open fileError with optymalizedError with open fileError with optymalizedError with open fileError with optymalizedError with open fileError with optymalizedError with open fileError with optymalized
Wychodzi na to, że coś się dzieje niedobrego przy wczytywaniu plików do surface'ów po otworzeniu i potwierdzeniu wyboru pliku w OFN. Wygląda to tak, jakby wartość nazwa_obrazu była albo pusta, albo nie była przekazywana po tym zdarzeniu. Nie umiem tego wytłumaczyć. Tyczy się to też dźwięków, które wczytuję i próbuję odtworzyć, ale nie działają, bo pewnie też plik nie zostaje załadowany.

scratch = Mix_LoadWAV( "./music/warning.wav");
    if( Mix_PlayChannel( -1, scratch, 0 ) == -1 )
    {
     return 1;
    }

Jednak chcę podkreślić, że to wszystko przed momentem uruchomienia okna OFN działało. Nie wiem, o co tu chodzi. Już nawet nie proszę, ale błagam o pomoc, bo to mi się w głowie nie mieści.

Z góry dzięki za okazaną mi pomoc

11
SDL / Odp: [SDL] SDL_Mixer
« dnia: Marzec 07, 2009, 00:23:40 »
Zapodaj całość

12
SDL / Odp: nie wyswietla obrazkow
« dnia: Marzec 06, 2009, 09:41:20 »
W ogóle to starsznie zamotałeś...

jeżeli raz użyłeś:

SDL_Init(SDL_INIT_EVERYTHING);
to po diaska używaś potem funkcji:

if(SDL_Init(SDL_INIT_VIDEO) < 0)
robisz dwa razy jedną i tą samą robotę... Poza tym lepiej jak ustawisz sobie jeden surface (powierzchnię) jako ogólnie dostępną (piszę tak, bo nie wiem, czy mogę ją nazwać zmienną, zwłaszcza, że surface jest wskaźnikiem :)) jako "ekran" , gdzie wszystkie obrazy będą wyświetlane

Ale nie masz się co martwić :D Dopiero raczkujesz, więc looknij tu:

www.lazyfoo.net

tu jest wszystko napisane

13
SDL / Odp: [SDL] SDL_Mixer
« dnia: Marzec 06, 2009, 09:31:13 »
NIe żeby coś, ale najpierw w ifie powinieneś sprawdzić, czy muzyka nie jest odtwarzana, a dopiero wtedy ją ładować...


www.lazyfoo.net

14
SDL / Znikające grafiki po użyciu okna WinAPI
« dnia: Marzec 05, 2009, 14:02:49 »
Mam problem z moim oknem tworzonym w WinAPI i naprawdę już nie wiem, o co jemu chodzi. Mój program w bardzo dużej części jest napisany w SDLu i potrzebowałem okienka "Otworz jako" i "Zapisz jako". Stworzyłem sobie takie okienka według poradnika Dark Cult:

int window_open_txt(HINSTANCE hThisInstance, HINSTANCE hPrevInstance, LPSTR lpszArgument, int nFunsterStil)

{   
     SDL_Surface *tytul, *tekst;
     bool already = false;
     OPENFILENAME ofn;
     ZeroMemory(&ofn,sizeof(ofn));
     ofn.lStructSize = sizeof(OPENFILENAME);
     ofn.hwndOwner = NULL;
     ofn.lpstrFilter = "Pliki tekstowe (*.txt)\0*.txt\0Niesformatowane pliki tekstowe (*.rtf)\0*.rft\0Pliki programu OpenOffice Write (*.dot)\0*.dot\0Pliki programu Word <= 2003 (*.doc)\0*.doc\0Wszystkie pliki\0*.*\0";
     char sNazwaPliku[MAX_PATH] = "";
     ofn.nMaxFile = MAX_PATH;
     ofn.lpstrFile = sNazwaPliku;
     ofn.lpstrDefExt = "txt";
     ofn.Flags = OFN_FILEMUSTEXIST | OFN_HIDEREADONLY;
     if(GetOpenFileName(&ofn))
     {
      return 1;
     }
     else return 0;
}


Kiedy funkcja się wykona i powraca do głównego ekranu (napisanego w SDLu), to wszystkie grafiki jakby poznikały. Po prostu wyświetla się się sam tekst. Można to jakoś wytłumaczyć?? Ja już naprawdę nie wiem o co tu biega. Przecież ten program nic nie powinien robić poza załadowaniem ścieżki do stringa sNazwaPliku...

Dlaczego łądowane grafiki tak nagle poznikały?? Z góry dzięki za pomoc...

15
SDL / Odp: [SDL] SDL_Mixer
« dnia: Marzec 05, 2009, 14:00:22 »
spróbuj tak:

music_menu = Mix_LoadMUS("./Data/music/Dezerts.mp3");

Strony: [1] 2 3