// enumfonts.cpp : 定义控制台应用程序的入口点。
//
#include \"stdafx.h\"
#include \"enumfonts.h\"
#ifdef _DEBUG
#define new DEBUG_NEW
#endif
// 唯一的应用程序对象
CWinApp theApp;
using namespace std;
int CALLBACK MyFontEnumProcw(CONST LOGFONTW *, CONST TEXTMETRICW *, DWORD, LPARAM);
//Global
DWORD g_dwFontCount = 0;
typedef struct tagFontFilters
{
DWORD dwFontType;
LPWSTR lfFaceName;
LPWSTR elfFullName;
LPWSTR elfStyle;
LPWSTR elfScript;
}FontFilters;
FontFilters g_filters[] =
{
{ TRUETYPE_FONTTYPE, NULL, L\"BousungEG-Light-GB\
{ TRUETYPE_FONTTYPE, NULL, L\"GBInnMing-Bold\
{ TRUETYPE_FONTTYPE, NULL, L\"GBInnMing-Heavy\
{ TRUETYPE_FONTTYPE, NULL, L\"GBJenLei-Medium\
{ TRUETYPE_FONTTYPE, NULL, L\"GBLinGothic-Medium\
{ TRUETYPE_FONTTYPE, NULL, L\"GBNanSun-Light\
{ TRUETYPE_FONTTYPE, NULL, L\"GBWeiBei-Bold\
{ TRUETYPE_FONTTYPE, NULL, L\"GBYenRound-Bold\
{ TRUETYPE_FONTTYPE, NULL, L\"GBZenKai-Medium\
{ TRUETYPE_FONTTYPE, NULL, L\"Pop3EG-Bold-T-GB\
{ TRUETYPE_FONTTYPE, NULL, L\"SingKaiEG-Bold-GB\
{ TRUETYPE_FONTTYPE, NULL, L\"SingyiEG-Ultra-GB\
{ TRUETYPE_FONTTYPE, NULL, L\"TInnMing-Medium\
{ TRUETYPE_FONTTYPE, NULL, L\"TLinGothic-Bold\
{ TRUETYPE_FONTTYPE, NULL, L\"TNanSung-Light\
{ TRUETYPE_FONTTYPE, NULL, L\"TSingYi-Ultra\
{ TRUETYPE_FONTTYPE, NULL, L\"TWeiBei-Bold\
{ TRUETYPE_FONTTYPE, NULL, L\"TZenKai-Medium\
};
HANDLE g_hFile = NULL;
WCHAR g_lastName[LF_FULLFACESIZE] = { 0 };
int _tmain(int argc, TCHAR* argv[], TCHAR* envp[])
{
CoInitialize(NULL);
setlocale(LC_ALL, \"chs\");
int nRetCode = 0;
HMODULE hModule = ::GetModuleHandle(NULL);
if (hModule != NULL)
{
if (!AfxWinInit(hModule, NULL, ::GetCommandLine(), 0))
{
_tprintf(_T(\"错误: MFC 初始化失败\\n\"));
nRetCode = 1;
return nRetCode;
}
}
else
{
_tprintf(_T(\"错误: GetModuleHandle 失败\\n\"));
nRetCode = 1;
return nRetCode;
}
WCHAR path[MAX_PATH];
GetModuleFileNameW(hModule, path, MAX_PATH);
PathRemoveFileSpecW(path);
PathAppendW(path, L\"my_enum_font_test.txt\");
g_hFile = CreateFile(path/*L\"c:\\\emp\\\\my_enum_font_test.txt\"*/,
GENERIC_READ | GENERIC_WRITE,
FILE_SHARE_READ, NULL, CREATE_ALWAYS,
FILE_ATTRIBUTE_NORMAL,
NULL);
if (g_hFile)
{
WCHAR dwUnicodeStyle = 0xfeff;
DWORD dwWritten;
WriteFile(g_hFile, &dwUnicodeStyle, sizeof(dwUnicodeStyle), &dwWritten, NULL);
HWND hWnd = GetDesktopWindow();
HDC hdc = GetDC(hWnd);
HDC hMyDC=CreateCompatibleDC(hdc);
LOGFONTW lf = { 0 };
BYTE charsets[] = {
ANSI_CHARSET,
DEFAULT_CHARSET,
SYMBOL_CHARSET,
SHIFTJIS_CHARSET,
HANGEUL_CHARSET,
HANGUL_CHARSET,
GB2312_CHARSET,
CHINESEBIG5_CHARSET,
OEM_CHARSET,
JOHAB_CHARSET,
HEBREW_CHARSET,
ARABIC_CHARSET,
GREEK_CHARSET,
TURKISH_CHARSET,
VIETNAMESE_CHARSET,
THAI_CHARSET,
EASTEUROPE_CHARSET,
RUSSIAN_CHARSET,
MAC_CHARSET,
BALTIC_CHARSET,
};
for (int i = 0; i < sizeof(charsets) / sizeof(charsets[0]); i++)
{
lf.lfCharSet = charsets[i]; // DEFAULT_CHARSET;
lf.lfFaceName[0] = 0;
EnumFontFamiliesExW(hMyDC/*hdc*/, /*NULL*/&lf, MyFontEnumProcw, NULL, 0);
}
//EnumFontFamiliesExW(hMyDC/*hdc*/, NULL, MyFontEnumProcw, NULL, 0);
DeleteDC(hMyDC);
ReleaseDC(hWnd, hdc);
CloseHandle(g_hFile);
}
return nRetCode;
}
BOOL IsMeet(DWORD FontType, PENUMLOGFONTEXDVW pFont, FontFilters *pFilter)
{
if (pFilter->dwFontType == 0 ||
(pFilter->dwFontType != 0 && (pFilter->dwFontType & FontType)))
{
//wprintf(L\"full name=\\\"%s\\\"\\n\
if (pFilter->elfFullName)
{
if (_wcsicmp(pFilter->elfFullName, pFont->elfEnumLogfontEx.elfFullName) == 0)
{
return TRUE;
}
}
if (pFilter->elfScript)
{
if (_wcsicmp(pFilter->elfScript, pFont->elfEnumLogfontEx.elfScript) == 0)
{
return TRUE;
}
}
if (pFilter->elfStyle)
{
if (_wcsicmp(pFilter->elfStyle, pFont->elfEnumLogfontEx.elfStyle) == 0)
{
return TRUE;
}
}
if (pFilter->lfFaceName)
{
if (_wcsicmp(pFilter->lfFaceName,
{
return TRUE;
}
}
}
return FALSE;
pFont-
>elfEnumLogfontEx.elfLogFont.lfFaceName) == 0)}
int CALLBACK MyFontEnumProcw(CONST LOGFONTW *lpelfe,
CONST TEXTMETRICW *lpntme,
DWORD FontType,
LPARAM lParam)
{
PENUMLOGFONTEXDVW pFont = (PENUMLOGFONTEXDVW)lpelfe;
if (_wcsicmp(g_lastName, pFont->elfEnumLogfontEx.elfFullName))
{
wcscpy_s(g_lastName, LF_FULLFACESIZE, pFont->elfEnumLogfontEx.elfFullName);
if (g_hFile)
{
CStringW s;
s.Format(L\"full=%s, script=%s, style=%s, face=%s\\r\\n\
pFont->elfEnumLogfontEx.elfFullName,
pFont->elfEnumLogfontEx.elfScript,
pFont->elfEnumLogfontEx.elfStyle,
pFont->elfEnumLogfontEx.elfLogFont.lfFaceName);
DWORD dwWritten;
WriteFile(g_hFile, (LPCWSTR)s, sizeof(WCHAR)*s.GetLength(), NULL);
}
}
if (FontType & TRUETYPE_FONTTYPE)
{
NEWTEXTMETRICEX *pEx = (NEWTEXTMETRICEX *)lpntme;
}
&dwWritten, BOOL bMeet = FALSE;
for (int i = 0; i if (IsMeet(FontType, pFont, &g_filters[i])) { bMeet = TRUE; break; } }//end for if (bMeet) { CStringW s; s.Format(L\"\\nFontType=%d,\"\\ L\"dvNumAxes=%d,\\n\"\\ L\"fullname=%s,Script=%s,Style=%s\\n\"\\ L\"\CharSet=%d,\\n\"\\ L\"\lfClipPrecision=%d,\\n\"\\ L\"\lfEscapement=%d,\\n\"\\ L\"\lfFaceName=%s,\\n\"\\ L\"\lfHeight=%d,\\n\"\\ L\"\lfItalic=%d,\\n\"\\ L\"\lfOrientation=%d,\\n\"\\ L\"\lfOutPrecision=%d,\\n\"\\ L\"\lfPitchAndFamily=%d,\\n\"\\ L\"\lfQuality=%d,\\n\"\\ L\"\lfStrikeOut=%d,\\n\"\\ L\"\lfUnderline=%d,\\n\"\\ L\"\lfWeight=%d,\\n\"\\ L\"\lfWidth=%d,\\n\ FontType, pFont->elfDesignVector.dvNumAxes, pFont->elfEnumLogfontEx.elfFullName, pFont->elfEnumLogfontEx.elfScript, pFont->elfEnumLogfontEx.elfStyle, pFont->elfEnumLogfontEx.elfLogFont.lfCharSet, pFont->elfEnumLogfontEx.elfLogFont.lfClipPrecision, pFont->elfEnumLogfontEx.elfLogFont.lfEscapement, pFont->elfEnumLogfontEx.elfLogFont.lfFaceName, pFont->elfEnumLogfontEx.elfLogFont.lfHeight, pFont->elfEnumLogfontEx.elfLogFont.lfItalic, pFont->elfEnumLogfontEx.elfLogFont.lfOrientation, pFont->elfEnumLogfontEx.elfLogFont.lfOutPrecision, pFont->elfEnumLogfontEx.elfLogFont.lfPitchAndFamily, pFont->elfEnumLogfontEx.elfLogFont.lfQuality, pFont->elfEnumLogfontEx.elfLogFont.lfStrikeOut, pFont->elfEnumLogfontEx.elfLogFont.lfUnderline, pFont->elfEnumLogfontEx.elfLogFont.lfWeight, pFont->elfEnumLogfontEx.elfLogFont.lfWidth ); s.Replace(L\"\\n\ wprintf(s); if (g_hFile) { DWORD dwWritten; WriteFile(g_hFile, (LPCWSTR)s, sizeof(WCHAR)*s.GetLength(), &dwWritten, NULL); } } return 1; } 因篇幅问题不能全部显示,请点此查看更多更全内容
Copyright © 2019- huatuowenda.com 版权所有 湘ICP备2023022495号-1
违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com
本站由北京市万商天勤律师事务所王兴未律师提供法律服务