Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

[SFML2, WinAPI (zasoby)]Czcionka z *.rc / HFONT na sf::Font

Ostatnio zmodyfikowano 2016-07-12 19:17
Autor Wiadomość
marcolo2307
Temat założony przez niniejszego użytkownika
[SFML2, WinAPI (zasoby)]Czcionka z *.rc / HFONT na sf::Font
» 2016-07-12 18:03:49
Cześć!

Tak jak w temacie: mam czcionkę w pliku *.rc i muszę ją zamienić/załadować do sf::Font (SFML 2). Jedyne co udało mi się osiągnąć to zdobyć uchwyt HFONT po wczytaniu z zasobów. Szukałem w Google oraz próbowałem użyć metod:
C/C++
HGLOBAL gfont;
HFONT font =( HGLOBAL ) gfont; // sprawdzalem tez static_cast i reinterpret_cast
sf::Font sffont;
sffont.loadFromMemory( font, sizeof( font ) );
C/C++
HGLOBAL gFont;
sf::FileInputStream stream;
stream.read( gFont, sizeof( gFont ) ); // sprawdzalem zarowno na HGLOBAL jak i HFONT
sf::Font sfFont;
sfFont.loadFromStream( stream );

Myślałem nad zapisaniem z HFONT do pliku, odczytaniem
sf::Font::loadFromFile
 i usunięciem jej, ale wtedy w zasadzie nie ma sensu używania zasobów :/

EDIT: zapomniałem dopisać, w konsoli otrzymuję to:
Failed to load font from memory (failed to create the font face)
 Odpowiednio from memory, from stream dla sposobu ładowania.
P-149862
Gibas11
» 2016-07-12 19:08:39
1. Ten kod jest prawie-poprawny:
C/C++
HGLOBAL gfont;
HFONT font =( HGLOBAL ) gfont; // sprawdzalem tez static_cast i reinterpret_cast
sf::Font sffont;
sffont.loadFromMemory( font, sizeof( font ) );
Wszystkie te typy H-coś to w rzeczywistości void*, więc nie musisz się tym przejmować. Problemem jest tu
sizeof( font )
, które zawsze zwróci Ci 8 lub 4 bajty, musisz sprawdzić ile dokładnie waży czcionka i to przekazać jako parametr. Poza tym pamiętaj nie usuwać tych danych, bo sf::Font nigdzie ich nie kupuje.

I taki offtop, dlaczego do zasobów nie użyjesz Qt? Nie dość że wygodne i zorientowane obiektowo (więc lepiej pasuje do SFML i C++) to jeszcze masz w internetach gotowe biblioteki do integracji Qt i SFML.
P-149863
marcolo2307
Temat założony przez niniejszego użytkownika
» 2016-07-12 19:11:29
Dzięki :D Nie używam Qt, bo postanowiłem napisać sobie napisać własne GUI do SFML'a*, obecnie to i tak pewnie będą tylko przyciski i textboxy :D

* - tzn. nie uzywam Qt, bo nie :P
P-149864
Gibas11
» 2016-07-12 19:13:25
Qt jest uniwersalne, ma obsługę zasobów, sieci i wielu innych zabawek i przydaje się nawet bez kawałka od GUI, polecam. :)
P-149865
marcolo2307
Temat założony przez niniejszego użytkownika
» 2016-07-12 19:17:59
Wiem i zwykle z niego korzystam, choćby z pojedynczych bibliotek do np. SQL itd, ale tutaj nie chcę :P

Zamykam.
P-149867
« 1 »
  Strona 1 z 1