-
Notifications
You must be signed in to change notification settings - Fork 5
Expand file tree
/
Copy pathAmmoView.cpp
More file actions
122 lines (92 loc) · 2.62 KB
/
AmmoView.cpp
File metadata and controls
122 lines (92 loc) · 2.62 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
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
// AmmoView.cpp : implementation file
//
#include "stdafx.h"
#include "WinDE.h"
#include "AmmoView.h"
#include "AmmoBuilder.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// AmmoView dialog
AmmoView::AmmoView(CWnd* pParent /*=NULL*/)
: CTabPageSSL(AmmoView::IDD, pParent)
{
//{{AFX_DATA_INIT(AmmoView)
//}}AFX_DATA_INIT
}
void AmmoView::DoDataExchange(CDataExchange* pDX)
{
CTabPageSSL::DoDataExchange(pDX);
//{{AFX_DATA_MAP(AmmoView)
DDX_Control(pDX, IDC_AMMO_LIST, AmmoList);
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(AmmoView, CTabPageSSL)
//{{AFX_MSG_MAP(AmmoView)
ON_WM_SHOWWINDOW()
ON_NOTIFY(NM_DBLCLK, IDC_AMMO_LIST, OnDblclkAmmoList)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// AmmoView message handlers
BOOL AmmoView::OnInitDialog()
{
CTabPageSSL::OnInitDialog();
CRect rect;
DWORD dwStyle = ::SendMessage(AmmoList, LVM_GETEXTENDEDLISTVIEWSTYLE, 0, 0);
dwStyle |= LVS_EX_FULLROWSELECT;
::SendMessage(AmmoList, LVM_SETEXTENDEDLISTVIEWSTYLE, 0, dwStyle);
AmmoList.GetClientRect(rect);
AmmoList.InsertColumn(0, "Name", LVCFMT_LEFT, rect.Width()-(rect.Width()/5));
AmmoList.InsertColumn(1, "Price", LVCFMT_LEFT, rect.Width()/5);
return TRUE; // return TRUE unless you set the focus to a control
// EXCEPTION: OCX Property Pages should return FALSE
}
void AmmoView::OnShowWindow(BOOL bShow, UINT nStatus)
{
CTabPageSSL::OnShowWindow(bShow, nStatus);
Ammo *ammo;
int i = 0;
CString str;
if(bShow == 1)
{
AmmoList.DeleteAllItems();
for(ammo = AmmoList::ammos.first; ammo; ammo = ammo->next)
{
AmmoList.InsertItem(i, StripAnsiChars(ammo->name), 0);
str.Format("%d", ammo->price);
AmmoList.SetItem(i, 1, LVIF_TEXT, str, 1, 0, 0, 0);
AmmoList.SetItemData(i, (DWORD)ammo);
i++;
}
}
}
void AmmoView::OnDblclkAmmoList(NMHDR* pNMHDR, LRESULT* pResult)
{
AmmoBuilder ammo_dlg(this);
POSITION pos;
int i;
CString str;
CListCtrl *list;
list = (CListCtrl*)GetDlgItem(IDC_AMMO_LIST);
pos = list->GetFirstSelectedItemPosition();
i = list->GetNextSelectedItem(pos);
if(i < 0)
{
MessageBox("Please select the ammunition you wish to edit.");
return;
}
ammo_dlg.ammo = (Ammo*)list->GetItemData(i);
if(ammo_dlg.DoModal() == IDOK)
{
list->DeleteItem(i);
list->InsertItem(i, StripAnsiChars(ammo_dlg.ammo->name), 0);
str.Format("%d", ammo_dlg.ammo->price);
list->SetItem(i, 1, LVIF_TEXT, str, 1, 0, 0, 0);
list->SetItemData(i, (DWORD)ammo_dlg.ammo);
}
*pResult = 0;
}