zoukankan      html  css  js  c++  java
  • 限定矩形和对齐模式

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

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

    1)而限定矩形的理解:

         1.1)不是窗口的内边框。

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

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

    158e6156-a87c-48d5-9a7a-4a87fd68a0ed

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

    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);
    
    }

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

    8b9b84a7-ed75-4f00-8af8-0d77cfc63297

    关键语句是:

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

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

    另外一种写法是:

    SetTextAlign(hdc,TA_RIGHT);

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

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

  • 相关阅读:
    B1001 害死人不偿命的(3n+1)猜想 (15 分)
    A1050 String Subtraction (20 分)
    A1041 Be Unique (20 分)
    B1047 编程团体赛 (20 分)
    B1043 输出PATest (20 分)
    B1042 字符统计 (20 分)
    B1038 统计同成绩学生 (20 分)
    VB计算符号
    vs2008写代码的时候不能输入中文,sogou和google输入法都没有用
    如何彻底关闭Windows7自动更新
  • 原文地址:https://www.cnblogs.com/douzi2/p/5647485.html
Copyright © 2011-2022 走看看