Annotation of mstools/samples/gridfont/box.cxx, revision 1.1

1.1     ! root        1: #include <windows.h>
        !             2: #include <windowsx.h>
        !             3: #include "app.h"
        !             4: #include "box.hxx"
        !             5: 
        !             6: CTextField::CTextField(TCHAR *sz)
        !             7: {
        !             8:     _sz = sz;
        !             9: }
        !            10: 
        !            11: void CTextField::Paint(CCanvas &canvas, int x, int y)
        !            12: {
        !            13:     SetTextAlign(canvas, TA_LEFT | TA_BASELINE );
        !            14:     CFontSelect fs(canvas, _font);
        !            15:     canvas.Text(x, y, _sz, lstrlen(_sz) );
        !            16: }
        !            17: 
        !            18: void CTextField::GetExtent(CCanvas &canvas, SIZE *pSize)
        !            19: {
        !            20:     GetTextExtentPoint(canvas, _sz, lstrlen(_sz), pSize);
        !            21: }
        !            22: 
        !            23: void CTextField::SetFont(HFONT hfont)
        !            24: {
        !            25:     _font = hfont;      
        !            26: }
        !            27: 
        !            28: //-----------------------------------------------
        !            29: CBoxFormat::CBoxFormat(SIZE sizeChar) :
        !            30:         _fontAlias(TEXT("Arial Narrow"), -10, FALSE),
        !            31:         _fontCtype(TEXT("Arial"), 12, TRUE, FALSE, TRUE)
        !            32: {
        !            33:         _size = sizeChar;
        !            34: }
        !            35: 
        !            36: //-----------------------------------------------
        !            37: CBox::CBox( CBoxFormat &bxf, UINT iChar, HFONT hfont ) :
        !            38:         _fontBlock( hfont ),
        !            39:         _Block(1, 1, iChar, bxf ),
        !            40:         _bxf(bxf),
        !            41:         _Alias(TEXT("Character Type Bits:"))
        !            42: {
        !            43:     
        !            44:     _fontBlock.Update( -40, TRUE);
        !            45:     _Block.SetFont(_fontBlock); 
        !            46: 
        !            47:     _sizeBox.cx = bxf._size.cx+100; // shadow 100/20 poitns
        !            48:     _sizeBox.cy = bxf._size.cy+100;
        !            49: 
        !            50: #ifdef UNICODE
        !            51:     _sizeBox.cx += INCH4;
        !            52:     _sizeBox.cy += INCH4;
        !            53: #endif
        !            54: 
        !            55: 
        !            56:     _Alias.SetFont(bxf._fontAlias);
        !            57:     _iChar = iChar;
        !            58: }
        !            59:         
        !            60: 
        !            61: void CBox::Paint(CCanvas &canvas, POINT pt, RECT rc)
        !            62: {
        !            63:     int x = pt.x;
        !            64:     int y = pt.y;
        !            65: 
        !            66: #ifdef UNICODE
        !            67:     // adjust to length of header
        !            68: 
        !            69:     SIZE size;
        !            70:     _Alias.GetExtent(canvas, &size);
        !            71:     _sizeBox.cx += size.cx;
        !            72: #endif
        !            73:     // make rc large enough
        !            74:     rc.left = pt.x;
        !            75:     rc.top = pt.y;
        !            76:     rc.right = pt.x+_sizeBox.cx-100;
        !            77:     rc.bottom = pt.y+_sizeBox.cy-100;
        !            78: 
        !            79:     OffsetRect( &rc, 100, 100 );
        !            80:     FillRect(canvas, &rc, GetStockBrush(GRAY_BRUSH));
        !            81:     OffsetRect( &rc, -100, -100 );
        !            82:     FillRect(canvas, &rc, GetStockBrush(WHITE_BRUSH));
        !            83: 
        !            84: #ifdef UNICODE
        !            85:     CBlackPen pen(canvas, PS_SOLID, 20);
        !            86:     Rectangle(canvas, rc.left, rc.top, rc.right, rc.bottom);
        !            87: 
        !            88:     pt.x += INCH8;
        !            89:     pt.y += INCH8;
        !            90: #endif
        !            91: 
        !            92:     _Block.Paint(canvas, rc, pt);
        !            93: 
        !            94: #ifdef UNICODE
        !            95:     _Alias.Paint(canvas, x+=INCH1, y+= INCH4);
        !            96:     _Alias.GetExtent(canvas, &size);
        !            97: 
        !            98:     pt.x = x;
        !            99:     pt.y = y+INCH10;
        !           100: 
        !           101:     USHORT uTemp[2]={_iChar, 0};
        !           102:     USHORT uType[2];
        !           103: 
        !           104:     SetTextColor(canvas, RGB(0,128,0));
        !           105:     for( int i = 0; i < 3; i++ )
        !           106:     {
        !           107:         pt.y += size.cy;
        !           108: 
        !           109:         GetStringTypeW(1<<i, uTemp, 2, uType );
        !           110:         CCodeGrid Ctype(1,1, size, uType[0]);
        !           111:         Ctype.SetFont(_bxf._fontCtype);
        !           112:         Ctype.SetFormat(HEXADECIMAL,4);
        !           113:         Ctype.Paint(canvas, rc, pt);
        !           114:     }
        !           115:     SetTextColor(canvas, RGB(0,0,0));
        !           116: #endif
        !           117: }
        !           118: 
        !           119: UINT CBox::Hittest(CCanvas &canvas, POINT pt)
        !           120: {
        !           121:      return 0x00C5;
        !           122: }

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.