-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathCBASE_Display.cpp
More file actions
101 lines (82 loc) · 2.26 KB
/
Copy pathCBASE_Display.cpp
File metadata and controls
101 lines (82 loc) · 2.26 KB
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
// CBASE_Display.cpp: 实现文件
//
#include "pch.h"
#include "TXZ.h"
#include "CBASE_Display.h"
#include "afxdialogex.h"
// CBASE_Display 对话框
IMPLEMENT_DYNAMIC(CBASE_Display, CDialogEx)
CBASE_Display::CBASE_Display(CRect area, CRESOURCE* currentRes, CWnd* pParent /*=nullptr*/)
: CDialogEx(IDD_DISPLAY, pParent),
m_size(1), m_area(area), myRes(currentRes)
{
Clear();
}
CBASE_Display::~CBASE_Display()
{
}
void CBASE_Display::DoDataExchange(CDataExchange* pDX)
{
CDialogEx::DoDataExchange(pDX);
}
BEGIN_MESSAGE_MAP(CBASE_Display, CDialogEx)
END_MESSAGE_MAP()
// CBASE_Display 消息处理程序
BOOL CBASE_Display::OnInitDialog()
{
CDialogEx::OnInitDialog();
return TRUE; // return TRUE unless you set the focus to a control
// 异常: OCX 属性页应返回 FALSE
}
BOOL CBASE_Display::DestroyWindow()
{
// TODO: 在此添加专用代码和/或调用基类
Clear();
if (myRes != NULL) delete myRes;
return CDialogEx::DestroyWindow();
}
void CBASE_Display::Clear(BOOL hide)
{
// 释放控件数组
for (int i = 0; i < MAXMAPSIZE + 2; i++)
for (int j = 0; j < MAXMAPSIZE + 2; j++)
if (m_pPictureMap[i][j] != NULL)
{
delete m_pPictureMap[i][j];
m_pPictureMap[i][j] = NULL;
}
if (hide) ShowWindow(SW_HIDE);
}
BOOL CBASE_Display::Reset(int n, int m)
{
ShowWindow(SW_HIDE);
Clear();
m_size = min(m_area.Height() / n, m_area.Width() / m);
MoveWindow(m_area.left + (m_area.Width() - m * m_size) / 2, m_area.top + (m_area.Height() - n * m_size) / 2, m * m_size, n * m_size);
for (int i = 1; i <= n; i++)
for (int j = 1; j <= m; j++)
{
CStatic*& p = m_pPictureMap[i][j];
if (p != NULL)
{
MessageBox(_T("SERIOUS ERROR: Game指针初始非空"), _T("From xht"));
GetParent()->GetParent()->PostMessage(WM_CLOSE);
return FALSE;
}
p = new CStatic();
p->Create(NULL, SS_BITMAP, CRect((j - 1) * m_size, (i - 1) * m_size, m_size, m_size), this, IDC_D_BMP + i * (MAXMAPSIZE + 2) + j);
}
ShowWindow(SW_SHOW);
return TRUE;
}
void CBASE_Display::Update(int x, int y, UINT picTag, BOOL singleUpdate)
{
m_pPictureMap[x][y]->ShowWindow(SW_HIDE);
m_pPictureMap[x][y]->SetBitmap(myRes->GetPic(picTag));
m_pPictureMap[x][y]->MoveWindow((y - 1) * m_size, (x - 1) * m_size, m_size, m_size);
m_pPictureMap[x][y]->ShowWindow(SW_SHOW);
if (singleUpdate)
{
UpdateWindow();
}
}