summaryrefslogtreecommitdiff
path: root/src/T2DLL/T2DlgItemRadioText.cpp
blob: 84614f9333dffe2c6c2c1aaa8f4de9d4eb5bd3eb (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
#include "T2BitImage.h"
#include "T2DlgItemRadioText.h"

#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif

/*virtual*/ BOOL T2DlgItemRadioText::Create(const char *inWindowName, DWORD inStyle, const RECT &inRect, CWnd *inParentWnd, UINT inID) {
    CRect rect = inRect;
    CRect imageRect;

    strcpy(mText, inWindowName);
    GetObjectImage(imageRect, "DLGITEM:TxRadio");

    return T2DlgItem::Create("DLGITEM:TxRadio", inStyle, rect, inParentWnd, inID);
}

T2DlgItemRadioText::T2DlgItemRadioText(T2TowerDoc *inDoc, T2ImageObj *inImageObj, CPalette *inPalette)
    : T2DlgItemICheck(inDoc, inImageObj, inPalette)
{
    mText[0] = 0;
}

/*virtual*/ T2DlgItemRadioText::~T2DlgItemRadioText() {
}

/*virtual*/ BOOL T2DlgItemRadioText::OnT2DlgItemEraseBkgnd(CDC *pDC) {
    CRect drawRect;
    GetClientRect(drawRect);

    int saved = pDC->SaveDC();
    pDC->SelectPalette(mPalette, false);
    pDC->RealizePalette();

    RECT imageRect;
    T2BitImage *theImage = GetObjectImage(imageRect, "DLGITEM:TxRadio", GetPattern());
    drawRect.right = (drawRect.left + imageRect.right) - imageRect.left;
    drawRect.bottom = (drawRect.top + imageRect.bottom) - imageRect.top;
    theImage->CopyImage(pDC, imageRect, drawRect);

    GetClientRect(drawRect);
    drawRect.left += (drawRect.bottom - drawRect.top);

    char config = mText[0];
    const char *text = &mText[1];
    DWORD theFormat = DT_WORDBREAK | DT_NOPREFIX;

    if (isupper(config)) {
        theFormat |= DT_VCENTER | DT_SINGLELINE;
        config = tolower(config);
    }

    switch (config) {
        case 'c':
            theFormat |= DT_CENTER;
            break;
        case 'l':
            theFormat |= DT_LEFT;
            break;
        case 'r':
            theFormat |= DT_RIGHT;
            break;
    }

    pDC->SetBkMode(TRANSPARENT);
    pDC->DrawText(text, drawRect, theFormat);

    pDC->RestoreDC(saved);
    return true;
}

/*virtual*/ void T2DlgItemRadioText::OnT2DlgItemLButtonDown(UINT inFlags, CPoint inPt) {
    if (!GetValue())
        T2DlgItemICheck::OnT2DlgItemLButtonDown(inFlags, inPt);
}