限定矩形和对其模式

基准点可以设置在限定矩形的“任意位置”

(位置选择具体查看http://bbs.fishc.com/thread-49489-1-1.html

1)而限定矩形的理解:

1.1)不是窗口的内边框。

1.2)而是字符串本身的外边框~~

2)你设置的坐标,将会是基准点的坐标~~

知道了这些之后,实现什么右对齐就简单了。

LRESULT CALLBACK WndProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)

{

    HDC hdc;

    PAINTSTRUCT ps;

    RECT rect;

    TCHAR szBuffer1[128] = TEXT("12345");

    TCHAR szBuffer2[128] = TEXT("12");

    TCHAR szBuffer3[128] = TEXT("12SDFSDF345");

    TEXTMETRIC tm;

    int cyoff = 0;

    switch (message)

    {

    case WM_PAINT:

    hdc = BeginPaint(hwnd, &ps);

    GetClientRect(hwnd, &rect);

    DrawText(hdc, TEXT("大家好,这是我的第一个窗口程序!"), -1, &rect,

    DT_SINGLELINE | DT_CENTER | DT_VCENTER);

    EndPaint(hwnd, &ps);

    return 0;

    case WM_LBUTTONDOWN:

    hdc = GetDC(hwnd);

    LineTo(hdc,200,200);

    GetTextMetrics(hdc,&tm);

    cyoff = tm.tmHeight + tm.tmExternalLeading;

    SetTextAlign(hdc,TA_RIGHT);

    TextOut(hdc,200,200 + cyoff*0,szBuffer1,lstrlen(szBuffer1));

    TextOut(hdc,200,200 + cyoff*1,szBuffer2,lstrlen(szBuffer2));

    TextOut(hdc,200,200 + cyoff*2,szBuffer3,lstrlen(szBuffer3));

    ReleaseDC(hwnd,hdc);

    return 0;

    case WM_DESTROY:

    PostQuitMessage(0);

    return 0;

    }

    return DefWindowProc(hwnd, message, wParam, lParam);

}

效果图,特意画了一条线做对比~:

关键语句是:

SetTextAlign(hdc,GetTextAlign(hdc) | TA_RIGHT);

TA_RIGHT表示将基准点设置在限定矩形的右边上。

另外一种写法是:

SetTextAlign(hdc,TA_RIGHT);

因为基准点的默认值是TA_NOUPDATECP,TA_LEFT,TA_TOP

而他们的值都是0.所以也没必要“或一下”。

时间: 2024-08-11 05:45:25

限定矩形和对其模式的相关文章

Tkinter汇总

Python标准GUI:Tkinter Label组件: Label组件用于显示文本和图像,并且使用双重缓冲 用法: 使用Label组件可以指定想要显示的内容(文本.位图或者图片): from tkinter import * master = Tk() w = Label(master, text="Hello FishC!") w.pack() //用于自动调节尺寸 mainloop() //主事件循环 还可以通过foreground(fg)和background(bg)来设置La

D3DPRESENT_PARAMETERS详解

翻译自:http://msdn.microsoft.com/en-us/library/windows/desktop/bb172588(v=vs.85).aspx Describes the presentationparameters. 定义后台缓存表面的参数(包括深度模板缓存是否定义和像素格式). typedef structD3DPRESENT_PARAMETERS { UINT                BackBufferWidth; // 窗口模式可以为0,全屏模式是EnumA

Python中级开发教程

Python中级教程索引: 第一课.数据类型                      第十课.图形界面(下) 第二课.再讲数据类型                  第十一课.剪刀石头布游戏与随机函数 第三课.文本处理与色彩(上)             第十二课.获取手机系统信息(上) 第三课.文本处理与色彩(下)             第十二课.获取手机系统信息(下) 第四课.文件操作                      第十三课.选项卡(折叠界面) 第五课.while循环    

Python的标准GUI:Tkinter的组件

Label组件: Label组件用于显示文本和图像,并且使用双重缓冲 用法: 使用Label组件可以指定想要显示的内容(文本.位图或者图片): from tkinter import * master = Tk() w = Label(master, text="Hello FishC!") w.pack() //用于自动调节尺寸 mainloop() //主事件循环 还可以通过foreground(fg)和background(bg)来设置Label的前景色和背景色 Label可以显

poj2482 Stars in Your Window

此题可用线段树或静态二叉树来做. 考虑用线段树: 很容易想到先限定矩形横轴范围再考虑在此纵轴上矩形内物品总价值的最大值. 那么枚举矩形横轴的复杂度是O(n)的,考虑如何快速获取纵轴上的最大值. 我们不可能再次枚举纵轴,依次统计,这样做事多余的. 考虑窗口在纵轴上的滑动,每上升到一个新的高度,在加入新元素的同时只需将最底层的那些值弹出队列即可. 这样我们需要考虑队列上元素和的最大值. 我们从反面考虑每个元素对特定队列(矩形纵轴位置)的贡献. 枚举窗口的上面一条边,那么元素对窗口贡献正值当且仅当H(

TextMate 通用快捷键

http://unmi.cc/textmate-html-shortcuts/ 对于 Unix 族下的文本编辑器,VI 功能稍弱,Emacs 的能力是没得说,但学习曲线太陡峭了,于是簇拥到 TextMate 旗下.快捷键能让你大大的提 升使用的效率,它可以让你的手尽量少在键盘与鼠标之间飘来飘去.相比于 Windows 平台,Mac 更推崇使用快捷键来操作,搭配着大大的触摸板后,鼠标真的就有点多余了. 这里列出的所谓通用快捷键是不怎么涉及那些 Bundle 中的特定的快捷键而言的,还有些是系统通用

9.vim的常用命令《Mr.Robot》

前言:这些是vim最常用的命令!记住了会提高效率的<Mr.Robot> ---------------------------------------------------- vim需要的常用命令: d G     全部删除 i        当前编辑 o       新起一行编辑 gg             行首 G               行尾 10 gg        跳转到第十行 10  回车     向下跳转10行 u  撤销 ctrl  r  反撤销 yy  复制 p  粘

XML详解:第二部分 XML Schema

声明:原创作品,转载时请注明文章来自SAP师太技术博客:www.cnblogs.com/jiangzhengjun,并以超链接形式标明文章原始出处,否则将追究法律责任!原文链接:http://www.cnblogs.com/jiangzhengjun/p/4290897.html XML Schema. 22 全局/局部声明/定义... 23 模式与名称空间... 23 目标名称空间... 23 局部元素和属性的限定... 24 未声明目标名称空间... 26 在XML实例文档中引用Schema

QAbstractItemView为截断的项显示ToolTip(使用事件过滤)

在Qt中想要为QAbstractItemView中长度不够而使得内容被截断的项显示ToolTip,Qt官网有一篇文章介绍使用事件过滤器来显示太长的项,但是没有涵盖图标的情况.显示列头项太长的情况等等,这里做了下修改,以符合现在所需. 环境:Qt 5.1.0atooltipper.h 123456789101112131415161718   #ifndef ATOOLTIPPER_H#define ATOOLTIPPER_H #include <QObject> class AToolTipp