/* * 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