码迷,mamicode.com
首页 > 其他好文 > 详细

限定矩形和对其模式

时间:2016-07-06 18:17:52      阅读:219      评论:0      收藏:0      [点我收藏+]

标签:

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

(位置选择具体查看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.所以也没必要“或一下”。

限定矩形和对其模式

标签:

原文地址:http://www.cnblogs.com/douzi2/p/5647485.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!