summaryrefslogtreecommitdiff
path: root/src/T2DLL/T2SerialDialog.cpp
blob: 53f164159aa86c8a62fa91dbb4812e4750134f2e (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
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
#include "T2SerialDialog.h"

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

T2SerialDialog::T2SerialDialog(CWnd *parent)
    : CDialog(228, parent)
{
}

/*virtual*/ void T2SerialDialog::DoDataExchange(CDataExchange *pDX) {
    CWnd::DoDataExchange(pDX);
}

BEGIN_MESSAGE_MAP(T2SerialDialog, CDialog)
    ON_WM_PAINT()
END_MESSAGE_MAP()

/*virtual*/ void T2SerialDialog::OnOK() {
    GetDlgItemText(1000, mStrings[0]);
    GetDlgItemText(1001, mStrings[1]);
    GetDlgItemText(1002, mStrings[2]);
    GetDlgItemText(1003, mStrings[3]);
    CDialog::OnOK();
}

void T2SerialDialog::GetSerial(char *buf) {
    memcpy(&buf[0], mStrings[0], 4);
    memcpy(&buf[4], mStrings[1], 4);
    memcpy(&buf[8], mStrings[2], 4);
    memcpy(&buf[12], mStrings[3], 4);
    buf[16] = 0;
}

void T2SerialDialog::OnPaint() {
#pragma var_order(bitmapDC, bitmap, bitmapDCSave, font1, save, font2, y, dc, bitmapData, rect)
    CPaintDC dc(this);
    int save = dc.SaveDC();

    CRect rect;
    GetClientRect(rect);

    CFont font1;
    font1.CreatePointFont(100, "\x82\x6C\x82\x72\x20\x82\x6F\x83\x53\x83\x56\x83\x62\x83\x4E");

    CFont font2;
    font2.CreatePointFont(80, "\x82\x6C\x82\x72\x20\x82\x6F\x83\x53\x83\x56\x83\x62\x83\x4E");

    dc.SetBkMode(TRANSPARENT);

    int y = 15;

    dc.SelectObject(&font1);
    // "あなたのシリアル番号を入力してください。" - Please enter your serial number.
    dc.TextOut(10, y, "\x82\xA0\x82\xC8\x82\xBD\x82\xCC\x83\x56\x83\x8A\x83\x41\x83\x8B\x94\xD4\x8D\x86\x82\xF0\x93\xFC\x97\xCD\x82\xB5\x82\xC4\x82\xAD\x82\xBE\x82\xB3\x82\xA2\x81\x42");

    // "A"
    y += dc.GetTextExtent("\x82\x60").cy + 10;

    dc.SelectObject(&font2);
    // "シリアル番号はユーザー登録のお願いに記載されています。" - The serial number is listed in the user registration request.
    dc.TextOut(10, y, "\x83\x56\x83\x8A\x83\x41\x83\x8B\x94\xD4\x8D\x86\x82\xCD\x83\x86\x81\x5B\x83\x55\x81\x5B\x93\x6F\x98\x5E\x82\xCC\x82\xA8\x8A\xE8\x82\xA2\x82\xC9\x8B\x4C\x8D\xDA\x82\xB3\x82\xEA\x82\xC4\x82\xA2\x82\xDC\x82\xB7\x81\x42");

    CBitmap bitmap;
    bitmap.LoadBitmap(229);

    BITMAP bitmapData;
    bitmap.GetObject(sizeof(bitmapData), &bitmapData);

    CDC bitmapDC;
    bitmapDC.CreateCompatibleDC(&dc);
    int bitmapDCSave = bitmapDC.SaveDC();

    bitmapDC.SelectObject(&bitmap);
    dc.SetTextColor(GetSysColor(COLOR_BTNSHADOW));
    dc.SetBkColor(GetSysColor(COLOR_BTNFACE));
    dc.BitBlt(0, rect.bottom - bitmapData.bmHeight, bitmapData.bmWidth, bitmapData.bmHeight, &bitmapDC, 0, 0, SRCCOPY);

    bitmapDC.RestoreDC(bitmapDCSave);
    dc.RestoreDC(save);
    bitmap.DeleteObject();
}

/*virtual*/ BOOL T2SerialDialog::OnCommand(WPARAM wParam, LPARAM lParam) {
    int controlID = LOWORD(wParam);

    switch (LOWORD(controlID)) {
        case 1000:
        case 1001:
        case 1002:
        case 1003:
            if (HIWORD(wParam) == EN_CHANGE && GetDlgItem(controlID)->GetWindowTextLength() >= 4) {
                controlID++;
                if (controlID == 1004)
                    controlID = 1000;
                GetDlgItem(controlID)->SetFocus();
            }
            break;
    }

    return CWnd::OnCommand(wParam, lParam);
}