Re: Tutorial do gpi...

Autor: Wojciech Gazda (gazda_at_fema.krakow.pl)
Data: Fri 28 Dec 2001 - 12:05:43 MET


Lech Wiktor Piotrowski napisał(a):
>
> On Mon, 24 Dec 2001 12:10:26 +0100 (MET), Przemyslaw Dobrowolski wrote:
>
> >On Mon, 24 Dec 2001 11:51:58 +0100 (MET), Lech Wiktor Piotrowski wrote:
> >
> >>na wszelki wypadek pokazuje wiekszy kawalek. To jednak chyba nie jest wieszanie,
> >>tylko wieksze przestoje - budzi sie po jakims czasie. A ze wczoraj mialem duzy swap,
> >to
> >>moze wygladalo jak wieszanie. Wszystko jedno, cos nie tak:
> >
> >> case WM_PAINT:
> >> {
> >> POINTL a={0,0}, b={100,100};
> >> char tekst[]="This is a sample multiline text I wonder if I could make it scrollable?
> >>Anyway, I'll try";
> >> GpiMove(hps, &a);
> >> GpiCharString(hps, sizeof(tekst), tekst);
> >> break;
> >>
> >> }
> >
> >A gdzie stworzenie hps'a? Może by tak BeginPaint?
> >
>
> Tworze go w WM_CREATE, ale moze sie nie przenosi...

To co tworzysz w WM_CREATE to cache presentation space, ktory moze "żyć"
tylko w obrebie jednego wywołania procedury okna. To czego potrzebujesz
to prawdopodobnie "normal presentation space":

// Kod ktory powinien sie znalezc w WM_CREATE:
// hab - Anchor Block uzyskany za pomoca WinInitialize()
// size - 0, 0 poniewaz rozmiary zostana przejete od okna.
// Zmienne hdcWin i hpsWin powinny byc przechowane globalnie
// albo w strukturze skojarzonej z oknem za pomoca
// WinSetWindowPtr/WinQueryWindowPtr.
SIZEL size = {0, 0};
hdcWin = WinOpenWindowsDC(hwndWnd);
hpsWin = GpiCreatePS(hab, hdc, &size, PU_PELS | GPIT_NORMAL | GPIA_ASSOC
);

// To powinno sie znalezc w WM_DESTROY:
GpiDestroyPS(hpsWin);

// A to w czasie rysowania w WM_PAINT
// Do rysowania zawsze uzywamy "pochodnej" presentation space,
// dlatego, ze np. wymiary okna musza byc do niej zaaplikowane.
hps = WinBeginPaint(hpsWin, NULL);

...Rysowanko...

WinEndPaint(hps);

Ma to te zalete, ze w normal PS mozna raz, na poczatku utworzyc
wszystkie czesto uzywane czcionki, linie, area, ustawic atrybuty (palety
kolorow na przyklad) itd. Przy micro i cached presentation spaces trzeba
to robic za kazdym razem...

> Hmm, ale wydaje mi sie, ze ze stworzonym hps tez sie wieszal. sprawdze. Zreszta,
> niemoglby sie rysowac bez hpsa chyba
 

-- 
Wojciech Gazda
/*******************************************************/
/* Home page        - http://www.fema.krakow.pl/~gazda */
/* Asua programmers - http://www.asua.org.pl           */
/*******************************************************/


To archiwum zostało wygenerowane przez hypermail 2.1.7 : Tue 18 May 2004 - 15:34:11 MET DST