Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  

Показать сообщение отдельно

Аватара для El Sanchez

Ветеран


Contributor


Сообщения: 1264
Благодарности: 1024

Профиль | Отправить PM | Цитировать


Цитата Ivan_009:
Как добавить в инсталлятор свой шрифт можно пример.... »
Ivan_009, пример есть в шапке. В нем файл шрифта распаковывается во временную папку и подгружается оттуда. Для тех, кто использует расширенную версию Inno, возможен вариант с распаковкой шрифта в память, а не на диск. Вот пример:
Код: Выделить весь код
#define Font "Rurintania.ttf"
#define FontName "Rurintania"

[Setup]
RawDataResource=font:{#Font}

[code]
#ifdef UNICODE
    #define A "W"
#else
    #define A "A"
#endif

function FindResource(hModule: THandle; lpName: String; lpType: Integer): THandle; external 'FindResource{#A}@kernel32.dll stdcall';
function LoadResource(hModule, hResInfo: THandle): THandle; external 'LoadResource@kernel32.dll stdcall';
function LockResource(hResData: THandle): Longint; external 'LockResource@kernel32.dll stdcall';
function SizeofResource(hModule, hResInfo: THandle): DWORD; external 'SizeofResource@kernel32.dll stdcall';
function AddFontMemResourceEx(pbFont: Longint; cbFont: DWORD; pdv: Longint; var pcFonts: DWORD): THandle; external 'AddFontMemResourceEx@gdi32.dll stdcall';
function RemoveFontMemResourceEx(fh: THandle): BOOL; external 'RemoveFontMemResourceEx@gdi32.dll stdcall';

const
    RT_RCDATA = 10;

var
    fh, hResInfo, hResAddr: THandle;
    pcFonts, iResSize: DWORD;

procedure InitializeWizard();
begin
    if not FontExists('{#FontName}') then
    begin
        hResInfo := FindResource(HInstance, '_IS_FONT', RT_RCDATA);
        iResSize := SizeofResource(HInstance, hResInfo);
        hResAddr := LockResource(LoadResource(HInstance, hResInfo));
        pcFonts := 1;
        fh := AddFontMemResourceEx(hResAddr, iResSize, 0, pcFonts);
    end;
    //отсюда начинаем указывать наш шрифт
    WizardForm.Font.Name := '{#FontName}';
end;

procedure DeinitializeSetup();
begin
    RemoveFontMemResourceEx(fh);
end;
Это сообщение посчитали полезным следующие участники:

Отправлено: 21:51, 20-08-2012 | #702