ClearType检索方法

// ClearTypeTest.cpp : 定义控制台应用程序的入口点。
//
#include "stdafx.h"
#include<Windows.h>
#include <ios>
#pragma comment(lib,"USER32.lib")
#pragma comment(lib,"Gdi32.lib")



int _tmain(int argc, _TCHAR* argv[])
{
	 /*
	 fuction:
	 OutPut: _ibuffer, FE_FONTSMOOTHINGSTANDARD=1,标准模式, FE_FONTSMOOTHINGCLEARTYPE=2,ClearType模式
	 return: _fResult,	成功!=0,失败=0
	 BOOL SystemParametersInfoA(
	 UINT  uiAction,
	 UINT  uiParam,
	 PVOID pvParam,
	 UINT  fWinIni
	 );
	 */
	setlocale( LC_ALL, "CHS" );//解决 UNICODE 控制台 程序,无法显示汉字的问题
	UINT _iBuffer=-1;
	BOOL _fResult;
	// 确定是否启用ClearType
	 _fResult=SystemParametersInfo(SPI_GETCLEARTYPE,0,&_iBuffer,SPIF_UPDATEINIFILE|SPIF_SENDCHANGE);
	_tprintf_s(_T("SPI_GETCLEARTYPE=1为启用ClearType:\t%d\n\n"),_iBuffer);

	 // 确定是否启用字体平滑功能
		_fResult=SystemParametersInfo(SPI_GETFONTSMOOTHING,0,&_iBuffer,SPIF_UPDATEINIFILE|SPIF_SENDCHANGE);
	_tprintf_s(_T("SPI_GETFONTSMOOTHING=1为启用字体平滑功能:\t%d\n\n"),_iBuffer);

	 // 确定启用字体平滑功能类型
	 _fResult=SystemParametersInfo(SPI_GETFONTSMOOTHINGTYPE,0,&_iBuffer,SPIF_UPDATEINIFILE|SPIF_SENDCHANGE);
	_tprintf_s(_T("SPI_GETFONTSMOOTHINGTYPE=2为启用字体平滑模式ClearType:\t%d\n\n"),_iBuffer);

	 // 检索ClearType平滑中使用的对比度值。该pvParam参数必须指向一个UINT接收信息。有效对比度值为1000到2200.默认值为1400。
	 _fResult=SystemParametersInfo(SPI_GETFONTSMOOTHINGCONTRAST,0,&_iBuffer,SPIF_UPDATEINIFILE|SPIF_SENDCHANGE);
	 _tprintf_s(_T("SPI_GETFONTSMOOTHINGCONTRAST=ClearType平滑中使用的对比度值:\t%d\n\n"),_iBuffer);

	 // 检索字体平滑方向。该pvParam参数必须指向一个UINT接收信息。可能的值为FE_FONTSMOOTHINGORIENTATIONBGR(蓝绿红)和FE_FONTSMOOTHINGORIENTATIONRGB(红绿蓝)。
	 _fResult=SystemParametersInfo(SPI_GETFONTSMOOTHINGORIENTATION,0,&_iBuffer,SPIF_UPDATEINIFILE|SPIF_SENDCHANGE);
	 _tprintf_s(_T("SPI_GETFONTSMOOTHINGORIENTATION=1为字体平滑方向红绿蓝RGB:\t%d\n\n"),_iBuffer); 
	
	 //SystemParametersInfo(SPI_SETFONTSMOOTHINGTYPE,0,(PVOID)FE_FONTSMOOTHINGCLEARTYPE,SPIF_UPDATEINIFILE|SPIF_SENDCHANGE);
	
	 // 当前系统所用字体,SimSun=宋体
	 HFONT _hfont=(HFONT)GetStockObject(DEFAULT_GUI_FONT);
	 if (_hfont!=NULL)
	 {
		 LOGFONT _LogFont={0};
		 ::GetObject(_hfont, sizeof(LOGFONT), &_LogFont);

		 TCHAR _fontName[255] = { NULL } ;
		 _tcscpy_s(_fontName,_LogFont.lfFaceName);
		 _tprintf_s(_T("当前系统所使用的字体:\t%s\n\n"),_fontName); 
		 ::DeleteObject(_hfont);
	 }
	 system("pause");
	return 0;
}

2、ClearType说明

这里平滑字体边缘相当于平滑功能,它能控制字体clearType开关,这里关闭的情况下,检测ClearType无效的。所以程序流程应该是 先检测平滑功能是否打开,再检测平滑模式是否是ClearType

MSDN关于ClearType的概述:ClearType概述 ,ClearType抗锯齿

C#检测ClearType方法:https://stackoverflow.com/questions/14253249/how-to-check-if-cleartype-is-enabled-in-windows/14253437#14253437

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值