Wince 文本函数和字体应用

  好像又进入了一个疲惫期了,晚上状态不好,但是还是想继续更新下博客,继上次分析了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);

  创建字体

  选入设备环境

  使用字体

  删除字体

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

  1 #include <windows.h>
  2 #include "UseFont.h"
  3
  4
  5 struct DecodeUnit MainMessage[]={
  6     WM_DESTROY,DoDestroy,
  7     WM_PAINT,DoPaint
  8 };
  9
 10
 11 int WINAPI WinMain(HINSTANCE hInstance,
 12                    HINSTANCE hPrevInstance,
 13                    LPTSTR    lpCmdLine,
 14                    int       nCmdShow)
 15
 16 {
 17     //第一步:创建一个窗体类
 18     WNDCLASS ws;
 19
 20     TCHAR szAppName[]= TEXT("UseFont");
 21
 22     ws.style        = CS_HREDRAW | CS_VREDRAW;
 23     ws.cbClsExtra    = 0;
 24     ws.cbWndExtra   = 0;
 25     ws.hbrBackground = (HBRUSH)GetStockObject(WHITE_BRUSH);
 26     ws.hCursor        = 0;
 27     ws.hIcon        = 0;
 28     ws.hInstance    = hInstance;
 29     ws.lpfnWndProc    = WndProc;
 30     ws.lpszClassName = szAppName;
 31     ws.lpszMenuName = 0;
 32
 33     //第二步:注册窗体类
 34
 35     if (!RegisterClass(&ws))
 36         return -1;
 37
 38     //第三步:根据窗体类创建一个窗体
 39
 40     HWND hWnd = CreateWindow(szAppName,TEXT("Use Font"),WS_BORDER | WS_CAPTION | WS_SYSMENU | WS_VISIBLE,
 41         10,10,400,300,
 42         NULL,NULL,hInstance,NULL);
 43
 44
 45     //第四步:显示窗体
 46
 47     ShowWindow(hWnd,nCmdShow);
 48     UpdateWindow(hWnd);
 49
 50
 51     //第五步:让窗体获得系统消息
 52
 53     MSG msg;
 54     while(GetMessage(&msg,NULL,0,0))
 55     {
 56         TranslateMessage(&msg);
 57         DispatchMessage(&msg);
 58     }
 59
 60     return (0);
 61 }
 62
 63
 64
 65 LRESULT CALLBACK WndProc(HWND hwnd,UINT message,WPARAM wParam,LPARAM lParam)
 66 {
 67     int i;
 68     for (i =0 ;i< dim(MainMessage);i++)
 69     {
 70         if (message == MainMessage[i].message )
 71             MainMessage[i].fun(hwnd,message,wParam,lParam);
 72     }
 73     return DefWindowProc(hwnd,message,wParam,lParam);
 74 }
 75
 76
 77 LRESULT DoPaint(HWND hwnd,UINT message,WPARAM wParam,LPARAM lParam)
 78 {
 79
 80     PAINTSTRUCT ps;
 81     HDC hdc;
 82     RECT rect ;
 83     int nSmooth;
 84
 85     LOGFONT lf;
 86     HFONT hFontNew, hFontOld;
 87
 88     //定义要显示的内容
 89     TCHAR str[] = TEXT("show a Shadow Text");
 90
 91     //获得系统设备环境
 92     hdc = BeginPaint(hwnd, &ps);
 93     //获得窗体区域
 94     GetClientRect(hwnd,&rect);
 95
 96     //初始化自定义字体结构
 97     memset(&lf, 0, sizeof(LOGFONT));
 98
 99     //设置字体圆滑显示
100     nSmooth = 1000;
101     SystemParametersInfo(SPI_SETFONTSMOOTHINGCONTRAST, 0, &nSmooth, FALSE);
102
103     //设置自定义字体的显示质量
104     lf.lfQuality = CLEARTYPE_QUALITY;
105     //设置字体的倾斜度
106     lf.lfEscapement = 450;
107     //创建自定义字体
108     hFontNew = CreateFontIndirect(&lf);
109     //选入到设备环境
110     hFontOld = (HFONT) SelectObject(hdc, hFontNew);
111     //设置背景模式
112     SetBkMode(hdc,TRANSPARENT);
113     //设置字体颜色为红色
114     SetTextColor(hdc,RGB(0xFF,0,0));
115     //绘制文字
116     DrawText(hdc,str,-1,&rect,DT_SINGLELINE| DT_CENTER | DT_VCENTER);
117
118     //移动矩形区域
119     OffsetRect(&rect,-2,-2);
120     //重新设置字体颜色为黑色
121     SetTextColor(hdc,RGB(0,0,0));
122     DrawText(hdc,str,-1,&rect,DT_SINGLELINE| DT_CENTER | DT_VCENTER);
123
124     //清除使用过的资源
125     SelectObject(hdc, hFontOld);
126     DeleteObject(hFontNew);
127     //释放设备环境
128     EndPaint(hwnd,&ps);
129
130     return 0;
131
132
133 }
134
135 LRESULT DoDestroy(HWND hwnd,UINT message,WPARAM wParam,LPARAM lParam)
136 {
137     PostQuitMessage(0);
138     return (0);
139 }

UseFont

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

时间: 2024-11-05 17:41:23

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

Android 自定义TextView实现文本内容自动调整字体大小以适应TextView的大小

最近做通讯录小屏机 联系人姓名显示--长度超过边界字体变小 /**   * 自定义TextView,文本内容自动调整字体大小以适应TextView的大小   * @author yzp   */   public class AutoFitTextView extends TextView {       private Paint mTextPaint;       private float mTextSize;          public AutoFitTextView(Context

AttributedString - 富文本(不同字体大小颜色,下划线中划线)

1 #import "ViewController.h" 2 3 @interface ViewController () 4 5 @end 6 7 @implementation ViewController 8 9 - (void)viewDidLoad { 10 [super viewDidLoad]; 11 // Do any additional setup after loading the view, typically from a nib. 12 13 NSArray

文本效果、字体

文本效果 text-shadow: 字体阴影 .text{ text-shadow:5 px 5px 5px #FF0000} 指定:水平阴影.垂直阴影.模糊的距离,以及阴影的颜色 box-shadow: 背景阴影 text-overflow: 文字溢出 .text{text-overflow:clip|ellipsis} 剪切|-替代 word-wrap: 如果某个单词太长,不适合在一个区域内,它扩展到外面:css3中,自动切换属性允许强制文本换行-即使这意味着分裂它中间的一个字. .text

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

文本函数 CHAR CHAR(number):根据指定数字返回对应的字符.CHAR函数可将计算机其他类型的数字代码转换为字符. Number:用于指定字符的数字,介于1Number:用于指定字符的数字,介于165535之间(包括1和65535). 示例: CHAR(88)等于"X". CHAR(45)等于"-". CODE CODE(text):计算文本串中第一个字符的数字代码.返回的代码对应于计算机使用的字符集. Text:需要计算第一个字符代码的文本或单元格引用

美化MFC 之调整静态文本的颜色 字体。 用于添加公司标题 联系方式 口号等数据

很多人都觉得自己的程序的界面不那么美观,往往VC默认产生的对话框比较单调, 因此很多人往往找到很多其它的控件对对话框进行美化修饰, 例如给静态控件设置字体,设置背景颜色等等, 其实这些完全可以由VC自己的WM_CTLCOLOR消息来完成! 一个对话框 假设叫A. 我们可以在他的 WM_CTLCOLOR 里面做一些事情 来达到 ,美化节目的效果. 下面代码就是调整 静态文本的颜色. //对话框 WM_CTLCOLOR 消息的响应函数 //OnCtlColor 这个函数的名字 猜测是 控件 颜色的消

第17章 文本和字体_17.1-17.2 简单文本输出、 字体的背景知识

17.1 简单文本输出 17.1.1 文本输出函数 (1)TextOut(hdc,xStart,yStart,pString,iCount) ①xStart和yStart使用的是逻辑坐标,TextOut并不以NULL来做字符串的结束,需指定字符的个数iCount的值 ②SetTextAlign会改变xStart和yStart的含义 SetTextAlign 坐标值的含义 TA_LEFT xStart:第一个字符的左侧坐标 TA_RIGHT xStart:最后一个字符的右侧坐标 TA_CENTER

应用程序加载外部字体文件(使用AddFontResource API函数指定字体)

[cpp] view plain copy /* MSDN: Any application that adds or removes fonts from the system font table should notify other windows of the change by sending a WM_FONTCHANGE message to all top-level windows in the operating system. The application should

JavaScript实现,控制一个文本框只能输入正整数,如输入不符合条件则文本框全部字体标红

腾讯2014年研发职位笔试题Web前端方向简单题第一题. 代码: <html> <head> <title>test JavaScript</title> <script> window.onload = function() { var inputInt = document.getElementById('InputInt'); inputInt.onkeyup = function() { var num = this.value; var

关于文本PDG的字体

作者:马健邮箱:[email protected]发布:2008.08.03 有不少人在问为什么有些文本PDG在SSREADER里看到的是宋体,在Acobat里看到的是黑体,其实原因很简单:双方对字体的解释不同. 具体解决办法:1.用Pdg2Pic将文本PDG转换成散页PDF.2.用Adobe Acrobat Professional将散页PDF合并成一个PDF.合并的时候,Acrobat会自动对相同的字体对象进行合并,保证下面的更改只需更改一处,这点非常重要,用其他工具合并的不敢保证.3.用U