addfont
RemoveFontResource(L"C:\\Windows\\Fonts\\simfang.ttf");
AddFontResource(L"C:\\Windows\\Fonts\\simfang.ttf");
int r = AddFontResource(TEXT("C:\\WINDOWS\\FONTS\\simfang.ttf"));
PostMessage(HWND_BROADCAST, WM_FONTCHANGE, NULL, NULL);
SendMessage(HWND_BROADCAST, WM_FONTCHANGE, NULL, NULL);
???
// flush.cpp : 定义控制台应用程序的入口点。
//
#include "stdafx.h"
#include <stdio.h>
#include <Windows.h>
#include <iostream>
#include <fstream>
#include <vector>
#include <stdlib.h>
#include <string>
using namespace std;
int initLogFont( LOGFONT& lf ,const wchar_t * familyName, int fontSize ) {
lf.lfHeight = fontSize;
lf.lfWidth = 0;
lf.lfEscapement = 0;
lf.lfOrientation = 0;
lf.lfWeight = 0;
lf.lfItalic = 0;
lf.lfUnderline = 0;
lf.lfStrikeOut = 0;
lf.lfCharSet = 1;
lf.lfOutPrecision = 0;
lf.lfClipPrecision = 0;
lf.lfQuality = 0;
lf.lfPitchAndFamily = 0;
wcscpy( lf.lfFaceName, familyName );
return 0;
}
void loadBinaryFile( std::vector<char>& vec, std::string filePath ){
std::ifstream file( filePath, std::ifstream::binary );
if( !file.eof() && !file.fail() ) {
file.seekg( 0, std::ios_base::end );
std::streampos fileSize = file.tellg();
vec.resize( fileSize );
file.seekg( 0, std::ios_base::beg );
file.read( &vec[0], fileSize );
}
}
int _tmain(int argc, _TCHAR* argv[])
{
std::vector<char> fontData;
loadBinaryFile( fontData, "C:\\Windows\\Fonts\\simfang.ttf");
//Add font to the system (so 'CreateFontIndirect' is aware of the font)
DWORD count = 0;
HANDLE fontHandle = AddFontMemResourceEx( ( void * )fontData.data(), fontData.size(), 0,
&count );
if( !fontHandle ) {
std::cout << "Failed 'AddFontMemResourceEx' operation" << std::endl;
return 0;
}
LOGFONT lf;
initLogFont( lf, L"FangSong", 10000000 );
//ask windows for font
HFONT hfont = CreateFontIndirect( &lf );
if( !hfont ) {
std::cout << "Failed 'CreateFontIndirect' operation" << std::endl;
return 0;
}
//initialise DC
HDC displayDC = GetDC( 0 );
HDC hdc = CreateCompatibleDC( displayDC );
HGDIOBJ oldobj = SelectObject( hdc, hfont );
//ask DC for metrics
TEXTMETRIC textMetrics;
bool res = GetTextMetrics( hdc, &textMetrics );
if( !res ) {
std::cout << "Failed 'GetTextMetrics' operation" << std::endl;
return 0;
}
std::cout << "textMetrics.tmHeight : " << textMetrics.tmHeight << std::endl;
std::cout << "textMetrics.tmDescent : " << textMetrics.tmDescent << std::endl;
std::cout << "textMetrics.tmAscent : " << textMetrics.tmAscent << std::endl;
system("PAUSE");
return 0;
}
浙公网安备 33010602011771号