Здравствуйте, дорогие друзья!
Открыл для себя 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)
Моя признательность всем откликнувшимся не знает границ.
Всем спасибо