eGospodarka.pl
eGospodarka.pl poleca

eGospodarka.plGrupypl.comp.programming[winapi] mulący repaint przy resizeRe: [winapi] mulÄ?cy repaint przy resize
  • Path: news-archive.icm.edu.pl!news.gazeta.pl!not-for-mail
    From: " ślamazar" <f...@W...gazeta.pl>
    Newsgroups: pl.comp.programming
    Subject: Re: [winapi] mulÄ?cy repaint przy resize
    Date: Tue, 15 Jun 2010 08:04:23 +0000 (UTC)
    Organization: "Portal Gazeta.pl -> http://www.gazeta.pl"
    Lines: 62
    Message-ID: <hv7c66$e57$1@inews.gazeta.pl>
    References: <hv4q4j$1pl4$1@opal.icpnet.pl> <6...@n...onet.pl>
    <hv4thv$1t6j$1@opal.icpnet.pl>
    NNTP-Posting-Host: localhost
    Content-Type: text/plain; charset=ISO-8859-2
    Content-Transfer-Encoding: 8bit
    X-Trace: inews.gazeta.pl 1276589063 14503 172.20.26.242 (15 Jun 2010 08:04:23 GMT)
    X-Complaints-To: u...@a...pl
    NNTP-Posting-Date: Tue, 15 Jun 2010 08:04:23 +0000 (UTC)
    X-User: fir
    X-Forwarded-For: 83.6.138.148
    X-Remote-IP: localhost
    Xref: news-archive.icm.edu.pl pl.comp.programming:185765
    [ ukryj nagłówki ]

    > fir <p...@p...onet.pl> napisał(a):
    > > no muszę looknąć - dawno i zarazem rzadko używałem czystego winapi
    > > (i choć zarazem szkielet i najczesciej używane funkcje mam
    > > opanowane to mam pewne luki) kwestia tego że ja swój bufor
    > > mam w wygodnym mi formacie (i dopiero przy rysowaniu
    > > wartosci przetwarzam na kolory pixeli) - pewnie dla tego bitblta
    > > musialbym przygotowac go specjalnie, mozesz powiedzec pare słow
    > > o przygotowaniu tego bufora do blitnięcia? [da sie blitnac od razu
    > > np cos takiego "unsigned char [400][300][3];" ?]
    >
    > Właśnie tak robiłem.
    > BYTE bitmap[800*600*3];
    > void drawf(HDC lnghdc) {
    > HDC fHDC = CreateCompatibleDC(NULL);
    > BITMAPINFOHEADER bmiHeader;
    > bmiHeader.biSize=sizeof(bmiHeader);
    > bmiHeader.biWidth = 800;
    > bmiHeader.biHeight = -600;
    > bmiHeader.biPlanes = 1;
    > bmiHeader.biBitCount = 24;
    > bmiHeader.biCompression = BI_RGB;
    > bmiHeader.biSizeImage = 0;
    > bmiHeader.biXPelsPerMeter =0;
    > bmiHeader.biYPelsPerMeter =0;
    > bmiHeader.biClrUsed = 0;
    > bmiHeader.biClrImportant = 0;
    > BITMAPINFO pbmi;
    > pbmi.bmiHeader = bmiHeader;
    > void *ppvBits = NULL;
    > HBITMAP fBitmap = CreateDIBSection (fHDC, &pbmi, DIB_RGB_COLORS, &ppvBits,
    > NULL, NULL);
    > SelectObject(fHDC,fBitmap);
    > CopyMemory(ppvBits,bitmap,800*600*3);
    > BitBlt(lnghdc,0,0,800,600,fHDC,0,0,SRCCOPY);
    > DeleteObject(fBitmap);
    > }
    >
    ok, zasiadłem do maszyny i to zasadniczo działa, tnx tylko ze
    widzę tu chyba trzy błedy/problemy

    1) o ile sie orientuje samo CreatedibSection alokuje sobie bufor
    ktory jest dostepny pod ppvBits[] i mozna go uzywac,
    a CopyMemory z jeszcze jednego innego bufora jest fatalną redundancją
    i marnotrastwem i ramu i procka

    2) całą to inicjalicacje przed BitBlt jak i destrukcje
    po, warto zrobic tylko raz na poczatku i raz na koncu a nie wespol
    z kazdym BitBlitem

    3) w moim helpie do winapi jest napisane zeby deletowac zarowno
    bitmape jak i kontekst a ty deletujesz tylko bitmape; tu mam niejasnosc
    bo bitmapa jest czescia kontekstu i nie wiem czy o tyle wystarczy
    dletnac tylko kontekst czy tez np wczesniej jego podczesc czyli bitmape :-/

    czy ktos moglby to wyjasnic - powiedziec pare słow

    fir



    --
    Wysłano z serwisu Usenet w portalu Gazeta.pl -> http://www.gazeta.pl/usenet/

Podziel się

Poleć ten post znajomemu poleć

Wydrukuj ten post drukuj


Następne wpisy z tego wątku

Najnowsze wątki z tej grupy


Najnowsze wątki

Szukaj w grupach

Eksperci egospodarka.pl

1 1 1

Wpisz nazwę miasta, dla którego chcesz znaleźć jednostkę ZUS.

Wzory dokumentów

Bezpłatne wzory dokumentów i formularzy.
Wyszukaj i pobierz za darmo: