Elektroda.pl
Elektroda.pl
X
Please add exception to AdBlock for elektroda.pl.
If you watch the ads, you support portal and users.

Drukowanie w WinAPI C++ - jak zrobić interlinię?

wrych 04 Jun 2011 16:02 1456 8
  • #1
    wrych
    Level 20  
    Piszę program w WinAPI (C++) i potrzebuję wydrukować kilka linijek tekstu. Korzystam w tym celu z funkcji DrawText, której opis można znaleźć w wielu miejscach, np.: Link. Mimo wielu poszukiwań nie udało mi się odszukać, w jaki sposób zwiększyć interlinię w drukowanym tekście.
  • #3
    wrych
    Level 20  
    No cóż, wniosek podobny do efektów moich poszukiwań. Myślałem aby składać linię tekstu, znak po znaku, sprawdzać po każdym słowie, czy linia nie przekroczyła założonej długości. Jeśli linia będzie za długa to ostatnie słowo przenieść na początek nowego wiersza, a z tego usunąć. W jaki sposób mierzyć długość tekstu, mając do dyspozycji informacje o czcionce (nazwa, wielkość...)?
    Kiedyś bawiłem się Visual Basicem, takie funkcje tam były. W WinAPI ich nie widzę.
  • #5
    wrych
    Level 20  
    Dzięki Dżyszla, Twoja podpowiedź doprowadziła mnie do: Link
    Reszta to kwestia przeczytania dokumentacji zapisanej w nieznanym mi języku (angielskim)... A może ktoś znajdzie coś lepszego, czekam.
  • #6
    Akane
    Level 27  
    Zerknij czy o to chodzi:
    Code: c
    Log in, to see the code
  • #7
    wrych
    Level 20  
    Dzięki Akane, to co mi podpowidasz dotyczy dodatkowego odstępu między znakami. Jeśli chciałbym wyjustować linię, to mógłbym rozdzielić resztę miejsca na wszystkie odstępy między znakami - tekst byłby nieco rozstrzelony (nie mylić z rozstrzelanym ;) Lepiej byłoby oczywiście pozwiększać wszystkie odstępy...
    Ja jednak pytam o odstęp między liniami (interlinię).
  • #8
    Akane
    Level 27  
    W takim razie poniższa funkcja powinna załatwić sprawę:
    Code: text
    Log in, to see the code


    Co po zoptymalizowaniu i przeniesieniu do C powinno wyglądać mniej-więcej tak:
    Code: c
    Log in, to see the code
  • #9
    wrych
    Level 20  
    Dziękuję Akane, jak będę miał wolną chwilę, to sprawdzę Twoją (p)odpowiedź. W nocy problem padł, ale muszę to uporządkować, zanim umieszczę moje rozwiązanie na forum. Wobec tego tematu jeszcze nie zamykam.