Перейти к содержанию

nikolaynik

Пользователи
  • Активность

    1
  • Зарегистрирован

  • Посещение

Информация о nikolaynik

  • Звание
    Новичок
  1. Здравствуйте, дорогие друзья! Открыл для себя firemonkey, и неожиданно поняд, что крос платформенность - тяжелая для меня ноша! Я хочу выполнить простую операцию, подгрузить в приложение список системных шрифтов, чтобы пользователь, мог сам выбрать, что ему нравится. Обнаружил, что в firemonkey нет TFontDialog, нет TFontList. Ситуация бесfontовая! Благо есть интернет. И там, добрый человек - честь и хвала ему - детально раскладывает, как решить эту задачу хоть для windows, хоть для Mac. https://delphiscience.wordpress.com/2012/11/20/getting-system-fonts-list-in-firemonkey-the-new-tplatformextensions-class/ Но снова судьба злодейка кинула! Коды на Delphi! А я только начал разбираться в СИ++. В общем, прошу Вас, друзья, помочь мне адаптировать тот код под СИ, и вконце концов получить список системных шрифтов: TPlatformExtention.h //--------------------------------------------------------------------------- #ifndef PlatformExtentionH #define PlatformExtentionH //--------------------------------------------------------------------------- #include <System.Classes.hpp> //--------------------------------------------------------------------------- class TPlatformExtention: public TObject{ public: void FGetSystemFonts( TStringList *FontList ); }; //--------------------------------------------------------------------------- #endif TPlatformExtention.cpp //--------------------------------------------------------------------------- #pragma hdrstop #include <string> #include "PlatformExtention.h" //--------------------------------------------------------------------------- int FEnumFonts( TLogFont LogFont, TTextMetric TextMetric, unsigned long FontType, long Data ){ TStringList *List = new TStringList(); UnicodeString fName; fName = LogFont.lfFaceName; if( List->Count == 0 || (AnsiCompareText(List[List->Count-1].Text, fName) != 0 ) ){ List->Add( fName ); return 1; } return 0; } //--------------------------------------------------------------------------- void TPlatformExtention::FGetSystemFonts( TStringList *FontList ){ HDC dContext; TLogFont *LogFont = new TLogFont; dContext = GetDC(0); StringOfChar( *(LogFont->lfFaceName), sizeof( LogFont ) ); LogFont->lfCharSet = DEFAULT_CHARSET; EnumFontFamiliesEx( dContext, LogFont, FEnumFonts, 0, 0 ); ReleaseDC(0, dContext); } //--------------------------------------------------------------------------- #pragma package(smart_init) Моя признательность всем откликнувшимся не знает границ. Всем спасибо
×
×
  • Создать...