好像又进入了一个疲惫期了,晚上状态不好,但是还是想继续更新下博客,继上次分析了wince下设备环境以及怎么绘制相关图像后,,笔者在这片文章中讲到文本函数以及其相关应用。文本输出函数是输出文本的内容,也就是在一个窗体之上将文字输出的一个函数,当然输出文字有些居左居右居中的限制,例如显示背景颜色,前进颜色的一些输出设置,在wince中,字体是一个比较大的资源,它占据了很大的空间。所以wince当中所有的字体很少,但是它提供了一种方法,让我们可以自定义字体,这个简直nice呀,下面我来具体介绍一下上面提到的内容。

 *文本输出函数

  int DrawText(      //通过DrawText可以将一段文字输出到指定的区域去

    HDC hDC,      //表示设备环境

    LPCTSTR lpString,  //被输出的字符串的指针

    int nCount,      //字符串中的字符数

    LPRECT lpRect,    //文本的显示矩形区域

    UINT uFormat    //文本的显示方法

    );

 *文本输出设置

 1.设置文本的背景颜色

  COLORREF SeTBkColor( HDC hdc,COLORREF crColor);

 2.设置文本颜色

  COLORREF SetTextColor(HDC hdc,COLORREF crColor);

 3.文本的对齐方式

  UINT SetTextAlign(HDC hdc,UINT fmode);

 *wince 中的字体

 *系统默认有两种字体:光栅型(raster)和TrueType型

 *自定义字体类型: HFONT CreateFontlndirect(const LOGFONT *lplf);

  创建字体

  选入设备环境

  使用字体

  删除字体

下面也有一个实例来实线刚才讲到的文本函数和字体应用的问题。

 #include <windows.h>
#include "UseFont.h" struct DecodeUnit MainMessage[]={
WM_DESTROY,DoDestroy,
WM_PAINT,DoPaint
}; int WINAPI WinMain(HINSTANCE hInstance,
HINSTANCE hPrevInstance,
LPTSTR lpCmdLine,
int nCmdShow) {
//第一步:创建一个窗体类
WNDCLASS ws; TCHAR szAppName[]= TEXT("UseFont"); ws.style = CS_HREDRAW | CS_VREDRAW;
ws.cbClsExtra = ;
ws.cbWndExtra = ;
ws.hbrBackground = (HBRUSH)GetStockObject(WHITE_BRUSH);
ws.hCursor = ;
ws.hIcon = ;
ws.hInstance = hInstance;
ws.lpfnWndProc = WndProc;
ws.lpszClassName = szAppName;
ws.lpszMenuName = ; //第二步:注册窗体类 if (!RegisterClass(&ws))
return -; //第三步:根据窗体类创建一个窗体 HWND hWnd = CreateWindow(szAppName,TEXT("Use Font"),WS_BORDER | WS_CAPTION | WS_SYSMENU | WS_VISIBLE,
,,,,
NULL,NULL,hInstance,NULL); //第四步:显示窗体 ShowWindow(hWnd,nCmdShow);
UpdateWindow(hWnd); //第五步:让窗体获得系统消息 MSG msg;
while(GetMessage(&msg,NULL,,))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
} return ();
} LRESULT CALLBACK WndProc(HWND hwnd,UINT message,WPARAM wParam,LPARAM lParam)
{
int i;
for (i = ;i< dim(MainMessage);i++)
{
if (message == MainMessage[i].message )
MainMessage[i].fun(hwnd,message,wParam,lParam);
}
return DefWindowProc(hwnd,message,wParam,lParam);
} LRESULT DoPaint(HWND hwnd,UINT message,WPARAM wParam,LPARAM lParam)
{ PAINTSTRUCT ps;
HDC hdc;
RECT rect ;
int nSmooth; LOGFONT lf;
HFONT hFontNew, hFontOld; //定义要显示的内容
TCHAR str[] = TEXT("show a Shadow Text"); //获得系统设备环境
hdc = BeginPaint(hwnd, &ps);
//获得窗体区域
GetClientRect(hwnd,&rect); //初始化自定义字体结构
memset(&lf, , sizeof(LOGFONT)); //设置字体圆滑显示
nSmooth = ;
SystemParametersInfo(SPI_SETFONTSMOOTHINGCONTRAST, , &nSmooth, FALSE); //设置自定义字体的显示质量
lf.lfQuality = CLEARTYPE_QUALITY;
//设置字体的倾斜度
lf.lfEscapement = ;
//创建自定义字体
hFontNew = CreateFontIndirect(&lf);
//选入到设备环境
hFontOld = (HFONT) SelectObject(hdc, hFontNew);
//设置背景模式
SetBkMode(hdc,TRANSPARENT);
//设置字体颜色为红色
SetTextColor(hdc,RGB(0xFF,,));
//绘制文字
DrawText(hdc,str,-,&rect,DT_SINGLELINE| DT_CENTER | DT_VCENTER); //移动矩形区域
OffsetRect(&rect,-,-);
//重新设置字体颜色为黑色
SetTextColor(hdc,RGB(,,));
DrawText(hdc,str,-,&rect,DT_SINGLELINE| DT_CENTER | DT_VCENTER); //清除使用过的资源
SelectObject(hdc, hFontOld);
DeleteObject(hFontNew);
//释放设备环境
EndPaint(hwnd,&ps); return ; } LRESULT DoDestroy(HWND hwnd,UINT message,WPARAM wParam,LPARAM lParam)
{
PostQuitMessage();
return ();
}

UseFont

这里的代码还有待继续探索其中的深奥之处,以及对其中一些函数的使用,任重道远~

Wince 文本函数和字体应用的更多相关文章

  1. C#Winform使用扩展方法自定义富文本框(RichTextBox)字体颜色

    在利用C#开发Winform应用程序的时候,我们有可能使用RichTextBox来实现实时显示应用程序日志的功能,日志又分为:一般消息,警告提示 和错误等类别.为了更好地区分不同类型的日志,我们需要使 ...

  2. web报表工具FineReport常用函数的用法总结(文本函数)

    文本函数 CHAR CHAR(number):根据指定数字返回对应的字符.CHAR函数可将计算机其他类型的数字代码转换为字符. Number:用于指定字符的数字,介于1Number:用于指定字符的数字 ...

  3. jeecg富文本编辑器增加字体(仿宋)

    jeecg富文本编辑器增加字体(仿宋) 温馨提示:jeecg 提供了 uedit 富文本的实现,如下针对的是 uedit 增加仿宋字体示例. 主要修改三个文件:plug-in\ueditor\uedi ...

  4. python 全栈开发,Day48(标准文档流,块级元素和行内元素,浮动,margin的用法,文本属性和字体属性)

    昨日内容回顾 高级选择器: 后代选择 : div p 子代选择器 : div>p 并集选择器: div,p 交集选择器: div.active 属性选择器: [属性~='属性值'] 伪类选择器 ...

  5. python全栈开发day40-浮动的四大特性,浮动带来的问题和解决问题,文本属性、字体属性和颜色介绍

    一.昨日内容总结 1.盒模型及其属性 2.文本级标签.行内块.块级标签 3.继承性.层叠性.权重 4.浮动四大特性 # 浮动元素脱离标准文档流 # 贴靠 # 字围效果 # 自动收缩或紧缩 二.今日内容 ...

  6. {03--CSS布局设置} 盒模型 二 padding bode margin 标准文档流 块级元素和行内元素 浮动 margin的用法 文本属性和字体属性 超链接导航栏 background 定位 z-index

    03--CSS布局设置 本节目录 一 盒模型 二 padding(内边距) 三 boder(边框) 四 简单认识一下margin(外边距) 五 标准文档流 六 块级元素和行内元素 七 浮动 八 mar ...

  7. 文本属性和字体属性,超链接导航栏案例 background

    文本属性 介绍几个常用的. 文本对齐 text-align 属性规定元素中的文本的水平对齐方式. 属性值:none | center | left | right | justify 文本颜色 col ...

  8. web报表工具FineReport经常使用函数的使用方法总结(文本函数)

    文本函数 CHAR CHAR(number):依据指定数字返回相应的字符.CHAR函数可将计算机其它类型的数字代码转换为字符. Number:用于指定字符的数字,介于1Number:用于指定字符的数字 ...

  9. css 文本属性和字体属性

    1.将浮动居中 这需要三个盒子 <!DOCTYPE html> <html lang="en"> <head> <meta charset ...

随机推荐

  1. homework -06 围棋

    playPrev功能的实现 public void playPrev(ref GoMove gm) { Point p = gm.Point; m_colorToPlay = gm.Color; cl ...

  2. codeforces 630KIndivisibility(容斥原理)

    K. Indivisibility time limit per test 0.5 seconds memory limit per test 64 megabytes input standard ...

  3. servler--请求重定向

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletExcepti ...

  4. 推荐一个CodeProject上的SlideForm控件

    CodeProject有一篇文章介绍了怎么实现一个SlideForm,非常不错,收藏在此. http://www.codeproject.com/KB/dialog/csslideform.aspx ...

  5. SmallDateTime时间范围检查

    SamllDataTime是SQL Server中的一种表达时间的类型, 精度不高但是省空间,具体的细节就查看一下MSDN的文档吧. http://msdn.microsoft.com/zh-cn/l ...

  6. 通过SCVMM分配SMB 3.0 文件共享

    1.创建SMB群集共享,赋予Hyper-V主机. Hyper-V群集名称.Hyper-V管理员.Hyper-V服务账户完全控制权限 2.VMM提供程序导入 文件服务器(运行方式账户要对文件服务器群集的 ...

  7. 用c#读取并分析sql2005日志

    用过logExplorer的朋友都会被他强悍的功能吸引,我写过一篇详细的操作文档可以参考http://blog.csdn.net/jinjazz/archive/2008/05/19/2459692. ...

  8. delphi CoolBar这个怎么弄没了

    CoolBar这个怎么弄没了 像Windows这样的     procedure TForm1.Button1Click(Sender: TObject); begin    CoolBar1.Fix ...

  9. 如何将松散的dll打包进需要发布的exe

    我们需要发布的exe文件很多时候都可能会依赖于一堆松散的dll,如果想在发布的时候只提供exe文件,而不想把一大堆dll一起放在和exe同一个文件夹下,是有方法的,该方法由CLR via C#作者提出 ...

  10. Activity生命周期解说

    前言: 一直想着写一些Android基础知识分享给大家.可是有时候又认为怕写不好误导了大家学习Android.思前想后认为还是去Android官网看看,发如今Android官网上事实上就能学习到非常多 ...