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相关推荐

  1. 39.文本颜色设置SetTextColor、SetBkColor、SetCharacterExtra、GetSysColor、InvalidateRect

    SetTextColor设置文本前景色 __gdi_entry WINGDIAPI COLORREF WINAPI SetTextColor( __in HDC hdc, //绘图设备上下文__in ...

  2. 猎豹MFC--画文本和字体DrawText TextOut CFont 阴影

    首先建立单文档 视图: 在视图类下,右键属性添加消息Onpaint.在该函数内,填写自己的代码 法2: 改变字体: 另一种创建字体的方法: 阴影效果:设置偏移  颜色  模式 在view视图里弄 右键 ...

  3. windows编程之TextOut与DrawText -- 文本输出实验

    文章目录 windows编程之TextOut与DrawText -- 文本输出实验 实验名称 实验目的 实验要求 实验源码 思考题 windows编程之TextOut与DrawText – 文本输出实 ...

  4. VC++程序设计与应用--图形和文本输出

    目录 前言 一.图形与文本 1.1 图形设备接口和设备环境 1.1.1 图形设备接口 1.1.2 设备环境 1.1.3 设备环境类 1.1.4  颜色的设置 1.1.5  获取设备环境 1.2 GDI ...

  5. windows编程之TextOut与DrawText

    文章目录 windows编程之TextOut与DrawText TextOut 是什么函数 TextOut 函数原型 DrawText 是什么函数 DrawText 函数原型 TextOut与Draw ...

  6. 【Windows编程】系列第三篇:文本字符输出

    2019独角兽企业重金招聘Python工程师标准>>> 上一篇我们展示了如何使用Windows SDK创建基本控件,本篇来讨论如何输出文本字符. 在使用Win32编程时,我们常常要输 ...

  7. html弹出文本输入框,Windows API 弹出文本框输入的内容

    1 /*程序功能:点击button按钮弹出输入框的文本*/ 2 #include 3 4 struct 5 {6 intiStyle;7 TCHAR *szText;8 }9 button[]= 10 ...

  8. 孙鑫-MFC笔记四--文本编程

    1,创建插入符: void CreateSolidCaret( int nWidth, int nHeight );//创建插入符 void CreateCaret( CBitmap* pBitmap ...

  9. Delphi GDI对象之绘制文本

    转载:http://www.cnblogs.com/pchmonster/archive/2012/07/06/2579185.html 基本绘图操作(Basic Drawing Operations ...

最新文章

  1. 在电脑桌面怎样用命令开启远程桌面?
  2. Couldn't find leader offsets for Set([smt,0], [smt,1], [smt,2])
  3. ie代理配置错误_电缆厂组织结构图的7个常犯错误!
  4. RecycleVier的简单实现
  5. Hay Points
  6. 你究竟值多少钱?2021 科技行业薪酬分析
  7. 如果项目上线在上线期间出现BUG改怎么办?
  8. 用pyinstaller把python脚本编译成可执行程序(windows系统)
  9. TS文件格式详解及解封装过程
  10. 计算机网络基础知识复习笔记
  11. arcgis python实例_科学网—ArcGIS,Python,网络数据集中查询两点最短路径 - 余露的博文...
  12. 自定义插件——zBox
  13. Python3 + Scrapy爬链家深圳成交房信息
  14. 大数据工作流开源系统之DRAKE
  15. 算术左移,逻辑左移,算术右移,逻辑右移之间的区别
  16. keil5 字符编码的问题
  17. 以太网工业RFID读写器|读卡器CK-FR12-E01接线说明与PLC组网方案
  18. c语言中流水号的写法,科目一流水号是什么号
  19. cors实现请求跨域
  20. 一个简单PDF文件的结构分析

热门文章

  1. React18开发总结(完善中)
  2. 哪种女子才是男人最想要的?
  3. 2019前端面试题及答案汇总
  4. error: error validating “deployment. yaml“: error validating data: apiVersion not set; if you choose
  5. HTML中使用JS实现文档编辑器
  6. 明景视频侦查技术实验室-解决方案
  7. 转载:丫鬟的新衣——劳动合同法的寓言
  8. iPhone 定位怎么改?教你用 iToolab AnyGo更改目前 GPS 位置 (免越狱)
  9. 推荐——大学四年来受益匪浅的10个网站
  10. JQuery切换显示的效果,一句话搞定