ďťż
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, jeli parametr iOption przyjmie wartoć ETO_CLIP- PED, bšd prostokšt tła (który można wypełnić bieżšcym kolorem tła), jeli pa- rametr iOption przyjmie wartoć ETO OPAQUE. iOption może przyjmować obie wartoci bšd nie przyjmować żadnej z nich. Ostatni argument jest tablicš elementów typu integer, które okrelajš odległoci między kolejnymi znakami łańcucha tekstowego. Pozwala to programicie na elastycznš regulację tych odległoci, co może być przydatne do justowania poje- dynczego słowa w wšskiej kolumnie tekstu. Domylne 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 okrelać 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 wskanika do łańcucha tekstowego oraz długoci tego łańcucha. Jeli jednak jako argument podasz wskanik do cišgu znaków zakończonego wartociš 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. Domylny sposób działania funkcji DrawText można zmienić, odpowiednio ma- nipulujšc argumentem iFormat, który może przyjmować jednš z wielu wartoci. 1 Wartoć stałej DT LEFT (przyjmowana domylnie) 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 wyrodkowaniu łańcucha. Ponieważ stała DT LEFT jest zdefiniowana jako 0, nie musisz jej okrelać, jeli chcesz, aby tekst był wyrównany do lewej. Jeli 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ż okrelić, czy tekst ma być umieszczany przy górnej krawędzi prostokšta (DT TOP - domylnie), w jego dolnej częci (DT BOTTOM) bšd porodku (DT VCENTR, gdzie V ozna- cza vertical - w pionie). Wywietlajšc kilka wierszy tekstu, Windows łamie je w miejscach występowania znaków powrotu karetki bšd przesunięcia wiersza. Jeli jednak wiersze sš zbyt 890 Częć II: Grafika długie, by zmiecić 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 domylne działanie funkcji można zmienić, stosujšc znacz- nik DT NOCLIP, który jednoczerue przyspieszy jej pracę. Domylnie Windows przyjmuje odległoć pomiędzy wierszami tekstu równš wysokoci jednego zna- ku. Jeli wolisz zastosować zewnętrznš interlinię, użyj znacznika DT EXTERNALLEADING. Jeli wywietlany tekst zawiera znaki tabulacji ('\t' lub 0x09), należy zastosować znacznik DT EXPANDTABS. Domylnie 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 okrelajš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 wskanikiem 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 okrelane sš w jednostkach stanowišcych wielo- kro#noci redruej szerokoci 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 kontekcie urzšdzenia. Domy)ny
|
WÄ
tki
|