• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Biblioteka Allegro 5.0.10 - problem z tytułem okna

0 głosów
469 wizyt
pytanie zadane 5 czerwca 2015 w C i C++ przez 97kos Obywatel (1,390 p.)
edycja 5 czerwca 2015 przez 97kos

Witam smiley

Co mogę zrobić, aby zarówno w samej aplikacji zrobionej na podstawie bibloteki Allegro, jak i w tytule okna znaki polskie się poprawnie wyświetlały? Bo gdy przełączam kodowanie UTF-8 w Code::Blocks 13.12, dla tytułu ustawiają się znaczki, dla MessageBoxa i tekstu wypisuje już poprawnie. Natomiast gdy ustawiam WINDOWS-1250, jest odwrotnie. Trzeba się tu posłużyć metodą z odcinka 15, czy jest inny sposób, potrzebny akurat w tej sytuacji? smiley Proszę o szczerą pomoc.

Oto pełny kod źródłowy:


#include <allegro5/allegro.h>
#include <allegro5/allegro_native_dialog.h>
#include <allegro5/allegro_font.h>
#include <allegro5/allegro_ttf.h>

#define ScreenWidth 800
#define ScreenHeight 480

int main()
{
    if(!al_init())
    {
        al_show_native_message_box(NULL, "Błąd",
        "Uwaga", "Nie udało się zainicjalizować Allegro", NULL, ALLEGRO_MESSAGEBOX_WARN);
        return -1;
    }

    ALLEGRO_DISPLAY *display = al_create_display(ScreenWidth,ScreenHeight);

    ///feralna linia - dla przykładu podałem taki tytuł

    al_set_window_title(display, "Zażółć gęślą jaźń");

    if(!display)
    {
        al_show_native_message_box(NULL, "Błąd",
        "Uwaga", "Nie udało się wyświetlić okienka", NULL, ALLEGRO_MESSAGEBOX_WARN);
        return -1;
    }

    al_init_font_addon();
    al_init_ttf_addon();

    ALLEGRO_FONT *font = al_load_ttf_font("Tarzan.ttf", 35, 0);
    al_draw_text(font, al_map_rgb(230, 165, 0), ScreenWidth / 2, ScreenHeight - 280, ALLEGRO_ALIGN_CENTRE, "Witamy na pokładzie");

    al_flip_display();
    al_rest(6.0);
    al_destroy_font(font);
    al_destroy_display(display);

    return 0;
}

1 odpowiedź

+1 głos
odpowiedź 5 czerwca 2015 przez draghan VIP (106,230 p.)

Dawno nie pisałem w Allegro. Do dekorowania okna (pasek tytułu) pewnie używają wewnętrznie wywołań z WinAPI - gdzie domyślnym kodowaniem jest u nas "Windows 1250".

Ale możesz poeksperymentować. :)

Na początek może ustaw kodowanie plików źródłowych na UTF-8 w edytorze kodu. W dokumentacji piszą, że Allegro domyślnie oczekuje stringów w UTF-8, więc tak powinno być poprawnie dla większości kodu. Spróbuj przed wywołaniem al_set_window_title() stworzyć osobną zmienną typu ALLEGRO_USTR, która przechowa dla Ciebie tytuł okna. Z definicji powinna. Spójrz tu: http://alleg.sourceforge.net/a5docs/refman/utf8.html#allegro_ustr. I tę zmienną poślij do tej feralnej funkcji. :)

komentarz 5 czerwca 2015 przez draghan VIP (106,230 p.)
I nie wiem, czy dostałem plusa bo zadziałało, czy ktoś mi tak z kaprysu rzucił. ^^'
komentarz 5 czerwca 2015 przez 97kos Obywatel (1,390 p.)

Hehe, daję zawsze - jak są wartościowe komentarze. smiley

Podobne pytania

0 głosów
1 odpowiedź 478 wizyt
pytanie zadane 6 stycznia 2019 w C i C++ przez Sebastian Plichta Obywatel (1,200 p.)
0 głosów
1 odpowiedź 522 wizyt
pytanie zadane 22 sierpnia 2015 w C i C++ przez Patryk Krajewski Nałogowiec (26,170 p.)
0 głosów
2 odpowiedzi 1,153 wizyt
pytanie zadane 29 lipca 2015 w C i C++ przez Hokage2910 Początkujący (360 p.)

93,691 zapytań

142,610 odpowiedzi

323,215 komentarzy

63,215 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj

Twierdza Linux. Bezpieczeństwo dla dociekliwych

Aby uzyskać rabat -10%, użyjcie kodu pasja-linux, wpisując go w specjalne pole w koszyku.

...