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

Ładowanie .rc

Ostatnio zmodyfikowano 2017-05-02 18:38
Autor Wiadomość
marcolo2307
Temat założony przez niniejszego użytkownika
Ładowanie .rc
» 2017-05-02 17:11:13
Cześć!

Działa:

C/C++
#include <windows.h>
#include <SFML/Graphics.hpp>

void * data;
unsigned int size;

void load( /*void* data, unsigned int& size*/ )
{
    HRSRC hRc = FindResource( GetModuleHandle( NULL ), MAKEINTRESOURCE( 1001 ), MAKEINTRESOURCE( 10 ) );
    if( hRc == NULL )
         exit( - 1 );
   
    HGLOBAL hResource = LoadResource( GetModuleHandle( NULL ), hRc );
    data = LockResource( hResource );
    size = SizeofResource( GetModuleHandle( NULL ), hRc );
}

int main()
{
    //void* data;
    //unsigned int size;
   
    load( data, size );
   
    sf::Font font;
    if( !font.loadFromMemory( data, size ) )
         return - 4;
   
    sf::Text text( "test", font );
   
    sf::RenderWindow wnd( { 800, 600 }, "test", sf::Style::Default );
    sf::Event event;
    while( wnd.isOpen() )
    {
        while( wnd.pollEvent( event ) )
             if( event.type == sf::Event::Closed ) wnd.close();
       
        wnd.clear();
        wnd.draw( text );
        wnd.display();
    }
}

Nie działa:
C/C++
#include <windows.h>
#include <SFML/Graphics.hpp>

void load( void * data, unsigned int & size )
{
    HRSRC hRc = FindResource( GetModuleHandle( NULL ), MAKEINTRESOURCE( 1001 ), MAKEINTRESOURCE( 10 ) );
    if( hRc == NULL )
         exit( - 1 );
   
    HGLOBAL hResource = LoadResource( GetModuleHandle( NULL ), hRc );
    data = LockResource( hResource );
    size = SizeofResource( GetModuleHandle( NULL ), hRc );
}

int main()
{
    void * data;
    unsigned int size;
   
    load( data, size );
   
    sf::Font font;
    if( !font.loadFromMemory( data, size ) )
         return - 4;
   
    sf::Text text( "test", font );
   
    sf::RenderWindow wnd( { 800, 600 }, "test", sf::Style::Default );
    sf::Event event;
    while( wnd.isOpen() )
    {
        while( wnd.pollEvent( event ) )
             if( event.type == sf::Event::Closed ) wnd.close();
       
        wnd.clear();
        wnd.draw( text );
        wnd.display();
    }
}

Dlaczego? W niedziałającej wersji SFML nie chce utworzyć maski dla czcionki.

Jedyne co zmieniam to sposób przekazywania void* data i size_t size.
P-160659
j23
» 2017-05-02 18:29:40
void load( void * & data, unsigned int & size ) {...}
P-160660
marcolo2307
Temat założony przez niniejszego użytkownika
» 2017-05-02 18:38:10
Cóż... Działa... Zastanawiałem się nad tym, ale z tego co czytałem jedyną zmianą przy referencjach na wskaźnik jest oszczędność na kopiowaniu... Przecież operacja i tak dzieje się na adresie wskaźnika, więc dlaczego wymagana jest referencja?
P-160661
« 1 »
  Strona 1 z 1