Exteor/include/xtr/ui/SplitterFrame.h

63 lines
1.6 KiB
C
Raw Normal View History

2024-06-07 20:30:06 +03:00
#pragma once
namespace xtr::ui {
// don't sugget noexcept for default virtual implementations
#pragma warning( push )
#pragma warning( disable : 26440 )
//! Frame: 2 pane splitter
class Split2ViewFrame : public CMDIChildWndEx {
CString registryName;
SIZE minSize;
uint32_t minPane2Width;
int32_t& secondViewWidth;
CSplitterWnd splitterWnd{};
public:
~Split2ViewFrame() override = default;
Split2ViewFrame(const Split2ViewFrame&) = delete;
Split2ViewFrame& operator=(const Split2ViewFrame&) = delete;
protected:
Split2ViewFrame(uint32_t registryID, SIZE minSize,
uint32_t minPane2Width, int& splitterTracker);
private:
BOOL OnCreateClient(LPCREATESTRUCT lpcs, CCreateContext* pContext) override;
private:
DECLARE_MESSAGE_MAP()
afx_msg void OnGetMinMaxInfo(MINMAXINFO* lpMMI);
afx_msg void OnDestroy();
afx_msg void OnMDIActivate(BOOL bActivate, CWnd* pActivateWnd, CWnd* pDeactivateWnd);
private:
virtual CRuntimeClass* SecondViewClass() { return nullptr; }
virtual void PostCreateSetup(CWnd* /*firstView*/, CWnd* /*secondView*/) {}
};
class RSFormFrame : public Split2ViewFrame {
DECLARE_DYNCREATE(RSFormFrame)
RSFormFrame();
CRuntimeClass* SecondViewClass() override;
};
class RSModelFrame final : public Split2ViewFrame {
DECLARE_DYNCREATE(RSModelFrame)
RSModelFrame();
CRuntimeClass* SecondViewClass() override;
};
class OSSFrame final : public Split2ViewFrame {
DECLARE_DYNCREATE(OSSFrame)
OSSFrame();
CRuntimeClass* SecondViewClass() override;
void PostCreateSetup(CWnd* firstView, CWnd* secondView) override;
};
#pragma warning( pop )
} // namespace xtr::ui