35.文本输出函数TabbedTextOut、ExtTextOut、TextOut、SetBkColor
TextOut和TabbedTextOut、ExtTextOut的区别
TextOut是简单文本输出,不带格式的,可以控制文本的对齐方式
TabbedTextOut是可以控制带\t(制表符号)的文本
ExtTextOut是在TextOut的基础上,增加字符间距、背景颜色和剪裁框进行显示
TextOut 用当前选择的字体、背景颜色和正文颜色将一个字符串写到指定位置。
BOOL TextOut(
HDC hdc, // 设备描述表句柄
int nXStart, // 字符串的开始位置 x坐标
int nYStart, // 字符串的开始位置 y坐标
LPCTSTR lpString, // 字符串
int cbString // 字符串中字符的个数
);
TabbedTextOut 功能为该函数将一个字符串写到指定的位置,并按制表位位置数组里的值展开制表符。正文以当前选择的字体、背景色和字体写入。
TabbedTextOut函数定义
WINUSERAPI
LONG
WINAPI
TabbedTextOutW(__in HDC hdc, //绘图设备上下文__in int x, //起始X坐标__in int y, //起始Y坐标__in_ecount(chCount) LPCWSTR lpString, //要显示的字符串,字符串里面带制表符号\t__in int chCount, //字符串的长度,如果设置-1,则全部显示,可以用lstrlen(szBuffer)函数获取__in int nTabPositions, //制表符\t的各数,可以设置nArray数组长度,1,或是0__in_ecount_opt(nTabPositions) CONST INT *lpnTabStopPositions, //设置为nArray时,使用数组里的长度,使用1时,使用指针所指长度,如设置为0时,则使用Windows系统默认长度(一般是指当前字符宽度的8位)__in int nTabOrigin); //在起始位置上进行偏移的长度
#ifdef UNICODE
#define TabbedTextOut TabbedTextOutW
#else
#define TabbedTextOut TabbedTextOutA
#endif // !UNICODE
ExtTextOut 是在TextOut的基础上增加了字符间距、背景颜色和裁剪框进行控制
BOOL ExtTextOut(
HDC hdc, //绘图设备上下文
int X, //X起始位置int Y, //Y起始位置UINT fuOptions, //指定如何使用应用程序定义的矩形CONST RECT *lprc, //用于裁剪或作不透明物矩形的尺寸LPCTSTR lpString, //要输出的字符串UINT cbCount, //输出字符串的长度CONST INT *lpDistance); //指向可选数组的指针,其中数组里的值表示相邻字符单位开始处间距离
UINT fuOptions参数,用于控制矩形区域
#define ETO_OPAQUE 0x0002 //用当前的背景色来填充矩形
#define ETO_CLIPPED 0x0004 //对文本进行裁剪矩形
#if(WINVER >= 0x0400)
#define ETO_GLYPH_INDEX 0x0010
#define ETO_RTLREADING 0x0080
#define ETO_NUMERICSLOCAL 0x0400
#define ETO_NUMERICSLATIN 0x0800
#define ETO_IGNORELANGUAGE 0x1000
#endif /* WINVER >= 0x0400 */
#if (_WIN32_WINNT >= _WIN32_WINNT_WIN2K)
#define ETO_PDY 0x2000
#endif // (_WIN32_WINNT >= _WIN32_WINNT_WIN2K)
#if (_WIN32_WINNT >= _WIN32_WINNT_LONGHORN)
#define ETO_REVERSE_INDEX_MAP 0x10000
#endif
SetBkColor 用指定的颜色值来设置当前的背景色,如果指定的颜色值超出了当前设备的表示范围,则设置为最近似的、设备可以表示的颜色。
COLORREF SetBkColor(_
HDC hdc, //设备上下文
COLORREF color); //颜色
返回值是原背景色,可以用COLORREF iColorOld进行保存,以备使用
显示效果如下
#include <Windows.h>
#include "resource.h"VOID DrawText(HWND hWnd)
{PAINTSTRUCT ps;HDC hdc;hdc = BeginPaint(hWnd,&ps);int iArray[] = {100,200,300,400,500};int iArrayPos[] = {10,20,30,40,50};int iPos = 10;SetTextAlign(hdc,TA_LEFT|TA_TOP|TA_UPDATECP);TextOut(hdc,100,0,TEXT("单于大爷!"),lstrlen(TEXT("单于大爷!")));TextOut(hdc,100,0,TEXT("单于大爷!"),lstrlen(TEXT("单于大爷!")));//画一个矩形格子MoveToEx(hdc,100,100,NULL);LineTo(hdc,500,100);LineTo(hdc,500,300);LineTo(hdc,100,300);LineTo(hdc,100,100);MoveToEx(hdc,100,200,NULL);LineTo(hdc,500,200);MoveToEx(hdc,300,100,NULL);LineTo(hdc,300,300);SetTextAlign(hdc,TA_LEFT|TA_TOP);TextOut(hdc,100,100,TEXT("单于大爷!"),lstrlen(TEXT("单于大爷!")));SetTextAlign(hdc,TA_CENTER|TA_TOP);TextOut(hdc,300,100,TEXT("单于大爷!"),lstrlen(TEXT("单于大爷!")));SetTextAlign(hdc,TA_RIGHT|TA_TOP);TextOut(hdc,500,100,TEXT("单于大爷!"),lstrlen(TEXT("单于大爷!")));SetTextAlign(hdc,TA_LEFT|TA_BASELINE);TextOut(hdc,100,200,TEXT("单于大爷!"),lstrlen(TEXT("单于大爷!")));SetTextAlign(hdc,TA_CENTER|TA_BASELINE);TextOut(hdc,300,200,TEXT("单于大爷!"),lstrlen(TEXT("单于大爷!")));SetTextAlign(hdc,TA_RIGHT|TA_BASELINE);TextOut(hdc,500,200,TEXT("单于大爷!"),lstrlen(TEXT("单于大爷!")));SetTextAlign(hdc,TA_LEFT|TA_BOTTOM);TextOut(hdc,100,300,TEXT("单于大爷!"),lstrlen(TEXT("单于大爷!")));SetTextAlign(hdc,TA_CENTER|TA_BOTTOM);TextOut(hdc,300,300,TEXT("单于大爷!"),lstrlen(TEXT("单于大爷!")));SetTextAlign(hdc,TA_RIGHT|TA_BOTTOM);TextOut(hdc,500,300,TEXT("单于大爷!"),lstrlen(TEXT("单于大爷!")));TabbedTextOut(hdc,0,35,TEXT("单于\t大爷\t你好\t呀我\t在这\t里!"),-1,5,iArray,0);TabbedTextOut(hdc,0,55,TEXT("单于\t大爷\t你好\t呀我\t在这\t里!"),-1,5,iArray,50);TabbedTextOut(hdc,0,75,TEXT("单于\t大爷\t你好\t呀我\t在这\t里!"),-1,1,&iPos,0);TabbedTextOut(hdc,0,95,TEXT("单于\t大爷\t你好\t呀我\t在这\t里!"),-1,0,NULL,0);TabbedTextOut(hdc,0,150,TEXT("单于\t大爷\t你好\t呀我\t在这\t里!"),-1,0,NULL,50);SetTextAlign(hdc,TA_LEFT|TA_TOP);ExtTextOut(hdc,50,320,NULL,NULL,TEXT("单于大爷!"),lstrlen(TEXT("单于大爷!")),NULL);SetBkColor(hdc,RGB(255,0,255));ExtTextOut(hdc,50,340,ETO_OPAQUE,NULL,TEXT("单于大爷!"),lstrlen(TEXT("单于大爷!")),NULL);SetBkColor(hdc,RGB(128,255,128));ExtTextOut(hdc,50,380,NULL,NULL,TEXT("ABCDE"),5,iArrayPos);RECT rect;rect.left = 55;rect.top = 365;rect.right = 125;rect.bottom = 375;SetBkColor(hdc,RGB(0,255,255));ExtTextOut(hdc,50,360,ETO_OPAQUE | ETO_CLIPPED,&rect,TEXT("单于大爷!"),lstrlen(TEXT("单于大爷!")),NULL);SetBkColor(hdc,RGB(255,255,255));rect.left = 55;rect.top = 400;rect.right = 150;rect.bottom = 425;SetBkColor(hdc,RGB(128,128,128));ExtTextOut(hdc,50,400,ETO_CLIPPED | ETO_OPAQUE,&rect,"ABCDEF",6,iArrayPos);EndPaint(hWnd,&ps);return;
}INT_PTR CALLBACK DlgMainProc(HWND hWnd,UINT uMsg,WPARAM wParam,LPARAM lParam)
{BOOL bRet = true;switch(uMsg){case WM_PAINT://MessageBox(hWnd,TEXT("调用DrawText函数"),TEXT("测试"),MB_OK);DrawText(hWnd);return DefWindowProc(hWnd,uMsg,wParam,lParam);break;case WM_COMMAND:switch(LOWORD(wParam)){case IDC_BUTTON1:HDC hdc;//hdc = GetDC(hWnd);//DrawText(hWnd);//ReleaseDC(hWnd,hdc);EndDialog(hWnd,0);break;default:return DefWindowProc(hWnd,uMsg,wParam,lParam);}break;case WM_DESTROY:MessageBox(hWnd,TEXT("WM_DESTROY"),TEXT("测试"),MB_OK);break;case WM_CLOSE:MessageBox(hWnd,TEXT("WM_CLOSE"),TEXT("测试"),MB_OK);EndDialog(hWnd,0);break;default:bRet = false;}return bRet;
}int APIENTRY WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,LPSTR szCmdLine,int nCmdShow)
{DialogBox(hInstance,MAKEINTRESOURCE(IDD_DIALOG1),NULL,DlgMainProc);return 0;
}
35.文本输出函数TabbedTextOut、ExtTextOut、TextOut、SetBkColor相关推荐
- 39.文本颜色设置SetTextColor、SetBkColor、SetCharacterExtra、GetSysColor、InvalidateRect
SetTextColor设置文本前景色 __gdi_entry WINGDIAPI COLORREF WINAPI SetTextColor( __in HDC hdc, //绘图设备上下文__in ...
- 猎豹MFC--画文本和字体DrawText TextOut CFont 阴影
首先建立单文档 视图: 在视图类下,右键属性添加消息Onpaint.在该函数内,填写自己的代码 法2: 改变字体: 另一种创建字体的方法: 阴影效果:设置偏移 颜色 模式 在view视图里弄 右键 ...
- windows编程之TextOut与DrawText -- 文本输出实验
文章目录 windows编程之TextOut与DrawText -- 文本输出实验 实验名称 实验目的 实验要求 实验源码 思考题 windows编程之TextOut与DrawText – 文本输出实 ...
- VC++程序设计与应用--图形和文本输出
目录 前言 一.图形与文本 1.1 图形设备接口和设备环境 1.1.1 图形设备接口 1.1.2 设备环境 1.1.3 设备环境类 1.1.4 颜色的设置 1.1.5 获取设备环境 1.2 GDI ...
- windows编程之TextOut与DrawText
文章目录 windows编程之TextOut与DrawText TextOut 是什么函数 TextOut 函数原型 DrawText 是什么函数 DrawText 函数原型 TextOut与Draw ...
- 【Windows编程】系列第三篇:文本字符输出
2019独角兽企业重金招聘Python工程师标准>>> 上一篇我们展示了如何使用Windows SDK创建基本控件,本篇来讨论如何输出文本字符. 在使用Win32编程时,我们常常要输 ...
- html弹出文本输入框,Windows API 弹出文本框输入的内容
1 /*程序功能:点击button按钮弹出输入框的文本*/ 2 #include 3 4 struct 5 {6 intiStyle;7 TCHAR *szText;8 }9 button[]= 10 ...
- 孙鑫-MFC笔记四--文本编程
1,创建插入符: void CreateSolidCaret( int nWidth, int nHeight );//创建插入符 void CreateCaret( CBitmap* pBitmap ...
- Delphi GDI对象之绘制文本
转载:http://www.cnblogs.com/pchmonster/archive/2012/07/06/2579185.html 基本绘图操作(Basic Drawing Operations ...
最新文章
- 在电脑桌面怎样用命令开启远程桌面?
- Couldn't find leader offsets for Set([smt,0], [smt,1], [smt,2])
- ie代理配置错误_电缆厂组织结构图的7个常犯错误!
- RecycleVier的简单实现
- Hay Points
- 你究竟值多少钱?2021 科技行业薪酬分析
- 如果项目上线在上线期间出现BUG改怎么办?
- 用pyinstaller把python脚本编译成可执行程序(windows系统)
- TS文件格式详解及解封装过程
- 计算机网络基础知识复习笔记
- arcgis python实例_科学网—ArcGIS,Python,网络数据集中查询两点最短路径 - 余露的博文...
- 自定义插件——zBox
- Python3 + Scrapy爬链家深圳成交房信息
- 大数据工作流开源系统之DRAKE
- 算术左移,逻辑左移,算术右移,逻辑右移之间的区别
- keil5 字符编码的问题
- 以太网工业RFID读写器|读卡器CK-FR12-E01接线说明与PLC组网方案
- c语言中流水号的写法,科目一流水号是什么号
- cors实现请求跨域
- 一个简单PDF文件的结构分析
热门文章
- React18开发总结(完善中)
- 哪种女子才是男人最想要的?
- 2019前端面试题及答案汇总
- error: error validating “deployment. yaml“: error validating data: apiVersion not set; if you choose
- HTML中使用JS实现文档编辑器
- 明景视频侦查技术实验室-解决方案
- 转载:丫鬟的新衣——劳动合同法的寓言
- iPhone 定位怎么改?教你用 iToolab AnyGo更改目前 GPS 位置 (免越狱)
- 推荐——大学四年来受益匪浅的10个网站
- JQuery切换显示的效果,一句话搞定