WINCE5.0应用程序字体的动态加载
来源:互联网 发布:找工作淘宝客服 编辑:程序博客网 时间:2024/05/16 11:58
大家知道,字体文件对于WINCE系统来说,一般都比较庞大,一般在2MB-15MB之间,如果在WINCE的NK中定制几种字体或者大容量字体,势必会增加NK的大小,这对嵌入式系统是不现实的。
好在WINCE系统提供了动态加载字体的API: AddFontResource, 利用这个API函数,我们可以动态加载字体,我们可以把字体放在NAND FLASH中,也可以放在SD卡上,因此不必担心NK会变大,消耗宝贵的FLASH资源问题。而且我们可以根据需要加载多个字体(注意:如果加载的字体太多或太大,也会占用系统内存)。但是要注意的是,系统退出时,记得要卸载动态加载的字体,否则会引起内存泄露。应用过程中,需要注意的问题是:结构体LOGFONT 的成员lfFaceName,应该为字体名,字体名在WINDOWS下,直接打开字体,最上面一行就有字体名显示。
闲话少说,贴上关键代码:
#define CUSTOM_FONT L"Storage Card//FZY3JW.TTF"
/////////////////////////////////////////////////////////////////////////////
// CFont_testDlg message handlers
BOOL CFont_testDlg::OnInitDialog()
{
CDialog::OnInitDialog();
// Set the icon for this dialog. The framework does this automatically
// when the application's main window is not a dialog
SetIcon(m_hIcon, TRUE); // Set big icon
SetIcon(m_hIcon, FALSE); // Set small icon
CenterWindow(GetDesktopWindow()); // center to the hpc screen
// TODO: Add extra initialization here
if (NULL != AddFontResource(CUSTOM_FONT))
{
::SendMessage( HWND_BROADCAST, WM_FONTCHANGE, 0, 0);
}
else
{
AfxMessageBox(L"加载方正准圆简体字体失败!");
}
if(NULL!= AddFontResource(XINGKAI_FONT))
{
::SendMessage(HWND_BROADCAST, WM_FONTCHANGE, 0, 0);
}
else
{
AfxMessageBox(L"加载行楷简体字体失败!");
}
LOGFONT lf;
memset(&lf, 0, sizeof(LOGFONT));
WCHAR lffn[]= TEXT("方正准圆简体");
wcscpy(lf.lfFaceName,lffn);
lf.lfHeight = 20;
lf.lfWidth = 0;
lf.lfQuality = CLEARTYPE_QUALITY;
lf.lfCharSet = GB2312_CHARSET;
//hFontNew = CreateFontIndirect(&lf);
hFontNew.CreateFontIndirect(&lf);
GetDlgItem(IDC_STC_TEXT)->SetFont(&hFontNew);
return TRUE; // return TRUE unless you set the focus to a control
}
程序退出后,记得卸载字体,否则会造成内存泄露:
if(RemoveFontResource(CUSTOM_FONT))
{
::SendMessage(HWND_BROADCAST, WM_FONTCHANGE, 0, 0);
}
else
AfxMessageBox(L"Failed to UNLOAD font!");
上述代码经过本人在WINCE5.0模拟器和三星2440平台上测试通过。
作者:Jade 原文地址:http://www.cnblogs.com/Jade2009/archive/2010/05/10/1731444.html
- WINCE5.0应用程序字体的动态加载
- NGUI 字体的动态加载
- Wince5.0应用程序开发总结
- Flash 动态加载字体
- WINCE字体动态加载
- 动态加载字体
- WINCE5.0下开发winform应用程序一
- WinCE5.0中应用程序直接写屏
- 在WINCE5.0开始菜单中添加应用程序
- WinCE5.0应用程序开机自动启动
- 应用程序加载外部字体文件
- WinCE5.0的一个EDB应用程序Debug版可以运行Release版就是老出错
- Qt在程序WinCE5.0下部署时"XXX不是有效的Windows CE应用程序"
- wince动态加载字体支持
- 动态加载和卸载字体
- wince 中动态加载字体
- C# 如何动态加载字体
- Wince动态加载字体资源
- oracle中rownum用法的总结(转)
- 解决Code::Blocks部分不能调试程序的原因
- equinox被体验
- JAVA解决大批量导出数据到excel产生内存溢出的方案
- 在存储过程中查询dba_tables表的时候,需要赋权限给该用户
- WINCE5.0应用程序字体的动态加载
- QTP,在描述性编程中使用Run-time属性来定义对象
- 关于二维数组地址与指针的一些注意点
- jQuery Ajax 全解析
- 央行常见的几个支付系统
- 让你的C3P0配置更健全
- 营销人员21条军规
- EABI和OABI的区别
- Android多媒体框架图