Při pohledu na obrázek v předcházejícím díle se vám na první pohled nemusí líbit grafické uspořádání zobrazeného textu. Řádky jsou různě dlouhé a jednotlivá písmena "nezařezávají" pěkně pod sebou. Je to dáno tím, že standardní font, který nám nabízí kontext zařízení má nastaven font s proměnnou šířkou písma.
Abychom písmena srovnali do hezkých sloupečků pod sebe, máme dvě možnosti. První z nich je vypočítat pozice x každého písmene na řádku a jednotlivá písmena tam umístit. Druhou možností je použít font s konstantní šířkou písma.
Druhá varianta je jednodušší, proto ji také využijeme. Již jsme si řekli, že kontext zařízení nese řadu atributů pro konkrétní grafické rozhraní. Kromě vlastností per, štětců a jiných pomůcek, jsou v kontextu uloženy i informace o použitém fontu. Nevyhovuje-li nám standardně nachystaný, musíme si vytvořit vlastní font, který pak do kontextu zařízení vložíme.
Jako první krok si do globalních proměnných přidáme proměnnou typu handle fontu:
Také budou potřeba některé lokální proměnné ve WndProc:
Většina práce se nyní odehraje při zpracování zprávy WM_CREATE, kde si vytvoříme font s pevnou šířkou. Postup je následující:
Abychom nezapomněli a úklid, můžeme hned do zpracování zprávy WM_DESTROY doplnit za zrušení bufferu i zrušení vytvořeného fontu.
Vlastní použití vytvořeného fontu je již jednoduché. Do zprávy WM_PAINT vložíme za příkaz BeginPaint výběr nového fontu do kontextu zařízení...
... a před EndPaint zase vrátíme původní font do kontextu zařízení
Jestliže program přeložíte a spustíte, měl by se výsledek proti předchozímu obrázku změnit asi takto:
Pokud se vám jej podařilo získat, dosáhli jste cíle tohoto krátkého dílu. :-)
Stránka načtena za 0.0018 sekund.