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
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
|
/*
* Childfrm.h
* ----------
* Purpose: Implementation of tab interface class.
* Notes : (currently none)
* Authors: OpenMPT Devs
* The OpenMPT source code is released under the BSD license. Read LICENSE for more details.
*/
#pragma once
#include "openmpt/all/BuildSettings.hpp"
#include "PatternCursor.h"
#include "../common/FileReaderFwd.h"
OPENMPT_NAMESPACE_BEGIN
class CModControlView;
class CModControlDlg;
struct GENERALVIEWSTATE
{
PlugParamIndex nParam = 0;
CHANNELINDEX nTab = 0;
PLUGINDEX nPlugin = 0;
bool initialized = false;
};
struct PATTERNVIEWSTATE
{
PATTERNINDEX nPattern = 0;
PatternCursor cursor = 0;
PatternRect selection;
PatternCursor::Columns nDetailLevel = PatternCursor::firstColumn;
ORDERINDEX nOrder = 0;
ORDERINDEX initialOrder = ORDERINDEX_INVALID;
bool initialized = false;
};
struct SAMPLEVIEWSTATE
{
SmpLength dwScrollPos = 0;
SmpLength dwBeginSel = 0;
SmpLength dwEndSel = 0;
SAMPLEINDEX nSample = 0;
SAMPLEINDEX initialSample = 0;
};
struct INSTRUMENTVIEWSTATE
{
float zoom = 4;
EnvelopeType nEnv = ENV_VOLUME;
INSTRUMENTINDEX initialInstrument = 0;
bool bGrid = false;
bool initialized = false;
};
struct COMMENTVIEWSTATE
{
UINT nId = 0;
bool initialized = false;
};
class CChildFrame: public CMDIChildWnd
{
friend class CModControlDlg;
DECLARE_DYNCREATE(CChildFrame)
public:
CChildFrame();
protected:
static CChildFrame *m_lastActiveFrame;
static int glMdiOpenCount;
// Attributes
protected:
CSplitterWnd m_wndSplitter;
HWND m_hWndCtrl, m_hWndView;
GENERALVIEWSTATE m_ViewGeneral;
PATTERNVIEWSTATE m_ViewPatterns;
SAMPLEVIEWSTATE m_ViewSamples;
INSTRUMENTVIEWSTATE m_ViewInstruments;
COMMENTVIEWSTATE m_ViewComments;
CHAR m_szCurrentViewClassName[256];
bool m_bMaxWhenClosed;
bool m_bInitialActivation;
// Operations
public:
CModControlView *GetModControlView() const { return (CModControlView *)m_wndSplitter.GetPane(0, 0); }
BOOL ChangeViewClass(CRuntimeClass* pNewViewClass, CCreateContext* pContext=NULL);
void ForceRefresh();
void SavePosition(BOOL bExit=FALSE);
const char *GetCurrentViewClassName() const;
LRESULT SendCtrlMessage(UINT uMsg, LPARAM lParam = 0) const;
LRESULT SendViewMessage(UINT uMsg, LPARAM lParam = 0) const;
LRESULT ActivateView(UINT nId, LPARAM lParam) { return ::SendMessage(m_hWndCtrl, WM_MOD_ACTIVATEVIEW, nId, lParam); }
HWND GetHwndCtrl() const { return m_hWndCtrl; }
HWND GetHwndView() const { return m_hWndView; }
GENERALVIEWSTATE &GetGeneralViewState() { return m_ViewGeneral; }
PATTERNVIEWSTATE &GetPatternViewState() { return m_ViewPatterns; }
SAMPLEVIEWSTATE &GetSampleViewState() { return m_ViewSamples; }
INSTRUMENTVIEWSTATE &GetInstrumentViewState() { return m_ViewInstruments; }
COMMENTVIEWSTATE &GetCommentViewState() { return m_ViewComments; }
void SetSplitterHeight(int x);
int GetSplitterHeight();
std::string SerializeView() const;
void DeserializeView(FileReader &file);
void ToggleViews();
static CChildFrame *LastActiveFrame() { return m_lastActiveFrame; }
// Overrides
// ClassWizard generated virtual function overrides
//{{AFX_VIRTUAL(CChildFrame)
public:
BOOL OnCreateClient(LPCREATESTRUCT lpcs, CCreateContext* pContext) override;
BOOL PreCreateWindow(CREATESTRUCT& cs) override;
void ActivateFrame(int nCmdShow) override;
void OnUpdateFrameTitle(BOOL bAddToTitle) override;
//}}AFX_VIRTUAL
// Implementation
public:
virtual ~CChildFrame();
// Generated message map functions
protected:
//{{AFX_MSG(CChildFrame)
afx_msg void OnDestroy();
afx_msg BOOL OnNcActivate(BOOL bActivate);
afx_msg void OnMDIActivate(BOOL bActivate, CWnd *pActivateWnd, CWnd *pDeactivateWnd);
afx_msg LRESULT OnChangeViewClass(WPARAM, LPARAM lParam);
afx_msg LRESULT OnInstrumentSelected(WPARAM, LPARAM lParam);
afx_msg BOOL OnToolTipText(UINT, NMHDR* pNMHDR, LRESULT* pResult);
//}}AFX_MSG
DECLARE_MESSAGE_MAP()
};
/////////////////////////////////////////////////////////////////////////////
//{{AFX_INSERT_LOCATION}}
// Microsoft Developer Studio will insert additional declarations immediately before the previous line.
OPENMPT_NAMESPACE_END
|