ďťż

ExtTextOut (hdc, xStart, y5tart, i0ptions, &rect,PString, iCount, pxDistance) :Rozdział 17: Tekst i czcionki 889Pišty argument funkcji jest wskaŸnikiem...

Jak cię złapią, to znaczy, że oszukiwałeś. Jak nie, to znaczy, że posłużyłeś się odpowiednią taktyką.
Może
to być prostokšt wycinajšcy, jeœli parametr iOption przyjmie wartoœć ETO_CLIP-
PED, bšdŸ prostokšt tła (który można wypełnić bieżšcym kolorem tła), jeœli pa-
rametr iOption przyjmie wartoœć ETO OPAQUE. iOption może przyjmować obie
wartoœci bšdŸ nie przyjmować żadnej z nich.
Ostatni argument jest tablicš elementów typu integer, które okreœlajš odległoœci
między kolejnymi znakami łańcucha tekstowego. Pozwala to programiœcie na
elastycznš regulację tych odległoœci, co może być przydatne do justowania poje-
dynczego słowa w wšskiej kolumnie tekstu. Domyœlne odstępy między znakami
tekstu otrzymuje się, nadajšc argumentowi wartoœć NULL.
Funkcjš wyższego rzędu przeznaczonš do pisania tekstu jest DrawText, z którš
zetknšłeœ się po raz pierwszy w programie HELLOWIN w rozdziale 3. Zamiast
okreœlać poczštkowe współrzędne łańcucha tekstu, wystarczy zdefiniować struk-
turę typu RECT, opisujšcš prostokšt, w którym ma pojawiać się tekst:
l
DrawText (hdc, pString, iCount, &rect, iFormat) ;
Podobnie jak w wypadku innych funkcji wyprowadzania tekstu, DrawText wy-
maga podania wskaŸnika do łańcucha tekstowego oraz długoœci tego łańcucha.
Jeœli jednak jako argument podasz wskaŸnik do cišgu znaków zakończonego
wartoœciš NULL, wystarczy, że ustalisz wartoœć iCount jako -l, a Windows auto-
matycznie wyznaczy długoœć tekstu.
Kiedy iFormat przyjmuje wartoœć 0, Windows interpretuje tekst jako jednolitero-
we wiersze oddzielone znakiem powrotu karetki ('\r' lub OxOD) bšdŸ znakiem
przesunięcia wiersza ('\n' lub OxOA). Tekst rozpoczyna się w lewym górnym
narożniku prostokšta definiowanego strukturš RECT. Znak powrotu karetki bšdŸ
przesunięcia wiersza jest traktowany jako znak nowego wiersza, więc Windows
kończy bieżšcy wiersz i rozpoczyna nowy. Każdy nowy wiersz rozpoczyna się
po lewej stronie prostokšta i jest odległy od poprzedniego o jednš wysokoœć zna-
ku. Każdy, włšczajšc w to częœci liter, wystajšcy poza obszar prostokšta po pra-
wej stronie lub poniżej dolnej jego krawędzi jest obcinany.
Domyœlny sposób działania funkcji DrawText można zmienić, odpowiednio ma-
nipulujšc argumentem iFormat, który może przyjmować jednš z wielu wartoœci.
1 Wartoœć stałej DT LEFT (przyjmowana domyœlnie) wymusza wyrównywanie tek-
stu do lewej krawędzi prostokšta, DT RIGHT odpowiada za wyrównanie tekstu
do jego prawej krawędzi, a DT CENTER decyduje o wyœrodkowaniu łańcucha.
Ponieważ stała DT LEFT jest zdefiniowana jako 0, nie musisz jej okreœlać, jeœli
chcesz, aby tekst był wyrównany do lewej.
Jeœli nie chcesz, aby znaki powrotu karetki oraz przesunięcia wiersza były inter-
pretowane jako znaki nowego wiersza, możesz przypisać zmiennej iFormat war-
toœć stałej DT SINGLELINE i Windows potraktuje wspomniane znaki jako zwy-
kłe, a nie sterujšce. Stosujšc DT SINGLELINE można również okreœlić, czy tekst
ma być umieszczany przy górnej krawędzi prostokšta (DT TOP - domyœlnie),
w jego dolnej częœci (DT BOTTOM) bšdŸ poœrodku (DT VCENTR, gdzie V ozna-
cza vertical - w pionie).
Wyœwietlajšc kilka wierszy tekstu, Windows łamie je w miejscach występowania
znaków powrotu karetki bšdŸ przesunięcia wiersza. Jeœli jednak wiersze sš zbyt
890 Częœć II: Grafika
długie, by zmieœcić się w obrębie prostokšta, możesz zastosować znacznik
DT WORDBREAK, który powoduje łamanie tekstu po każdym słowie. Zarówno
w tekstach jedno-, jak i wielowierszowych, Windows odcina fragmenty wystajš-
ce poza prostokšt. To domyœlne działanie funkcji można zmienić, stosujšc znacz-
nik DT NOCLIP, który jednoczeœrue przyspieszy jej pracę. Domyœlnie Windows
przyjmuje odległoœć pomiędzy wierszami tekstu równš wysokoœci jednego zna-
ku. Jeœli wolisz zastosować zewnętrznš interlinię, użyj znacznika
DT EXTERNALLEADING.
Jeœli wyœwietlany tekst zawiera znaki tabulacji ('\t' lub 0x09), należy zastosować
znacznik DT EXPANDTABS. Domyœlnie tabulacje stopu ustawiane sš co 8 zna-
ków. Możesz zmienić ten rozmiar, ustawiajšc znacznik DT TABSTOP. W takim
wypadku bardziej znaczšcy bajt parametru iFormat zawiera liczby okreœlajšce
pozycje każdej tabulacji stopu. Radzę jednak unikać stosowania tej techniki, gdyż
bardziej znaczšcy bajt parametru iFormat jest używany również przez kilka in-
nych znaczników. Problem znacznika DT TABSTOP jest rozwišzany przez funk-
cję DrawTextEx, która przyjmuje dodatkowy argument:
DrawTextEx (hdc, pString, iCount, &rect, iFormat, &drawtextparams) ;
Ostatni argument jest wskaŸnikiem do struktury DRAWTEXTPARAMS, zdefinio-
wanej następujšco:
typedef struct tagDRAWTEXTPARAMS
(
UINT cbSize ; // rozmiar struktury
int iTabLength ; // rozmiar każdej tabulacji stopu
int iLeftMargin ; // margines lewy
int iRightMargin ; // margines prawy
UINT uiLengthDrawn ; // liczba opracowanych znaków
DRAWTEXTPARAMS, * LPDRAWTEXTPARAMS ;
Trzy œrodkowe pola struktury okreœlane sš w jednostkach stanowišcych wielo-
kro#noœci œredruej szerokoœci znaku.
Atrybuty kontekstu urzţdzenia dia tekstu
Poza omówionš powyżej funkctš SetTextAlign istnieje wiele innych narzędzi, któ-
rych działanie wpływa na atrybuty tekstu w kontekœcie urzšdzenia. Domyœ)ny
Wątki
Powered by wordpress | Theme: simpletex | © Jak cię złapią, to znaczy, Ĺźe oszukiwałeś. Jak nie, to znaczy, Ĺźe posłuĹźyłeś się odpowiednią taktyką.