Wczytywanie regionu i rozmiar pliku

0

Witam!
Mam taki problem że podpinam pod okno region dzięki czemu okno może mieć ciekawy kształt. Region zapisuje do pliku wcześniej plik miał 14 kb i wszystko było super ale teraz mam bardziej skomplikowany region plik ma 114 kb i nie wiem czemu już nie moge go wczytać... tzn niby wczytuje podpinam i...nic się nie dzieje :(
kod wczytywania:

TFileStream *plik;
        RGNDATA *rgndata;
        plik = new TFileStream(skad, fmOpenRead | fmShareDenyWrite);
        DWORD size= plik->Size;
        rgndata = (RGNDATA*) malloc(size);
        plik->Read(rgndata, size);
        Region=ExtCreateRegion(NULL,size,rgndata);
        // konwertujemy to co zapisaliśmy do pliku, na odpowiedni region
        plik->Free();
        free((void*)rgndata);

zapisywania:

     DWORD size;
        RGNDATA *rgndata;
        TFileStream *plik;
        plik = new TFileStream(gdzie, fmCreate | fmShareDenyWrite);
        size = GetRegionData (Region, 0, NULL);
        rgndata = (RGNDATA*) malloc(size);
        GetRegionData(Region, size, rgndata);
        plik->Write(rgndata, size);
        plik->Free();
        free((void*)rgndata);

O co może chodzić?

0

Słyszałeś kiedyś coś o sprawdzaniu błędów?

przykładowo:

hreg = ExtCreateRegion(...)

if( hreg == 0 ) { ShowError(GetLastError()); return; }

inne funkcje też mogą 'nawalić'

w Win 95/98 region musi być mniejszy niż 64K

0

Nie działa mi to showError a wartość Dword ostatniego błedu to 87 co do wielkości regionu to mam win98 ale jak go tworze to on działa. Co innego jak go wczytuje z pliku. Wtedy region == NULL :(

0

ShowError to sam musisz napisać, to jest tylko taki przykład...

W 98 ma prawo nie działać. :D

0
T72 napisał(a)

[...] a wartość Dword ostatniego błedu to 87

według winerror.h -> ERROR_INVALID_PARAMETER.

PS. a po co zapisywać region w pliku???

0

ShowError to sam musisz napisać, to jest tylko taki przykład...

Nie trzeba pisac, bo jest juz napisane - FormatMessage ;)

0
0x666 napisał(a)

PS. a po co zapisywać region w pliku???
Bo jego tworzenie na podstawie skomplikowanej bitmapy trwa około 5 sekund a to za długo jak do każdorazowego odpalenia programu. Cóż nie wiem o co biega na Win XP u kumpla śmiga a u mnie działa tylko bez zapisywania. Jak zapisze to klapa... sprawdze jeszcze jak mi się uda gdzie indziej na win98

1 użytkowników online, w tym zalogowanych: 0, gości: 1