FLImaging 6.5.8.1
GUIMainFrame.h
1
2// MainFrm.h: CGUIMainFrame 클래스의 인터페이스
3//
4
5#pragma once
6
7#include "Resource.h"
8#include "GUIDialog.h"
9#include "GUIPaneLog.h"
10#include "GUIPaneCode.h"
11#include "GUIPaneProperties.h"
12#include "GUIPaneExampleSNAP.h"
13#include "GUIPaneColorTable.h"
14#include "GUIPaneViewGraph.h"
15#include "GUIPaneSheet.h"
16#include "GUIMenuBar.h"
17#include <map>
18
19namespace FLImaging
20{
21 namespace GUI
22 {
23 class CGUIViewImageBase;
24 class CGUIMenuItemProperty;
25 class CGUIManager;
26
27 class FL_EXPORT CGUIMainFrame : public CMDIFrameWndEx, public Base::CFLBase
28 {
29 DECLARE_DYNAMIC(CGUIMainFrame)
30
31 public:
32 CGUIMainFrame() noexcept;
33 CGUIMainFrame(const CGUIMainFrame& rh);
34
35 public:
36 virtual BOOL PreCreateWindow(CREATESTRUCT& cs);
37 virtual BOOL LoadFrame(UINT nIDResource, DWORD dwDefaultStyle = WS_OVERLAPPEDWINDOW | FWS_ADDTOTITLE, CWnd* pParentWnd = nullptr, CCreateContext* pContext = nullptr);
38
39 public:
40 virtual ~CGUIMainFrame();
41 #ifdef _DEBUG
42 virtual void AssertValid() const;
43 virtual void Dump(CDumpContext& dc) const;
44 #endif
45
46 public:
47 CGUIMenuBar* GetMenuBar();
48 CGUIPaneMenu* GetPaneMenu();
49 CGUIPaneExampleSNAP* GetPaneExampleSNAP();
50 CGUIPaneLog* GetPaneLog();
51 CGUIPaneCode* GetPaneCode();
52 CGUIPaneColorTable* GetPaneColorTable();
53 CGUIPaneViewGraph* GetPaneViewGraph();
54 CGUIPaneSheet* GetPaneSheet();
55 CGUIViewGraph* GetGraphViewInPane(); // CGUIPaneViewGraph 내부의 그래프 뷰를 얻는 함수
56 CDockingManager* GetDockingManagerPointer();
57
58 CGUIPaneProperties* GetLastPaneProperties();
59 bool SetLastPaneProperties(CGUIPaneProperties* pPane);
60
61 bool SwitchTabs(bool bForwardDirection);
62
63 virtual Base::CFLString<wchar_t> GetTextInformationAbout() const;
64 virtual void SetTextInformationAbout(const Base::CFLString<wchar_t>& str);
65 virtual void InitializeTextInformationAbout();
66
67 const CResult AddPane(CGUIPaneBase* pPane);
68 const CResult DeletePane(CGUIPaneBase* pPane);
69
70 void SetAppTheme(UINT nAppTheme);
71 UINT GetAppTheme();
72
73 void SetViewBaseLastFocused(CGUIViewImageBase* pView);
74 CGUIViewImageBase* GetViewBaseLastFocused();
75
76 void SetMenuItemPropertyForActivateView(CGUIMenuItemProperty* pMIPActivateView);
77
78 void OnAppLook(UINT id);
79
80 bool IsSetRecalcLayout();
81 void SetRecalcLayout(bool bSet);
82 void RecalcPaneSize();
83 std::vector<CGUIPaneProperties*>* GetVectorPaneProperties();
84 std::vector<CGUIPaneBase*>* GetVectorPanes();
85
86 const CResult ClearScreenSegmentationMode();
87
88 virtual bool IsTerminateAppRequested() const;
89 virtual void RequestTerminateApp(bool bTerminate = true);
90
91 // 프로그램 종료 허용 여부를 반환
92 virtual bool IsCloseEnabled() const;
93 // 프로그램 종료 허용 여부 설정
94 virtual void SetCloseEnabled(bool bEnable);
95
96 // 창 크기 조절 가능 여부를 반환
97 virtual bool IsResizable() const;
98 // 창 크기 조절 가능 여부 설정
99 virtual void SetResizable(bool bResizable = true);
100
101 DeclareGetClassType();
102
103 protected: // 컨트롤 모음이 포함된 멤버입니다.
104 UINT m_nAppTheme;
105
106 CGUIMenuBar m_wndMenuBar;
107 CGUIPaneMenu m_wndPaneMenu;
108 CGUIPaneExampleSNAP m_wndPaneExampleSNAP;
109 CGUIPaneLog m_wndPaneLog;
110 CGUIPaneCode m_wndPaneCode;
111 CGUIPaneViewGraph m_wndPaneViewGraph;
112 CGUIPaneSheet m_wndPaneSheet;
113 CGUIPaneColorTable m_wndPaneColorTable;
114
115 CGUIViewImageBase* m_pViewBaseLastFocused;
116 CGUIPaneProperties* m_pLastPaneProperties;
117 CGUIMenuItemProperty* m_pMIPActivateView;
118 CBitmap* m_pBmpBackground;
119 CSize m_szBackground;
120
121 EScreenSegmentationMode m_eScreenSegmentationMode;
122 CRect m_rtSegmentationPrevWindow;
123 int32_t m_i32SegmentationPrevShowCmd;
124
125 std::vector<CGUIPaneBase*>& m_vctPPaneBase;
126 std::vector<CGUIPaneProperties*>& m_vctPPaneProperties;
127
128 protected:
129 virtual void OnReceiveBroadcast(const Base::CBroadcastMessage* pMessage) override;
130 afx_msg int OnCreate(LPCREATESTRUCT lpCreateStruct);
131 afx_msg LRESULT OnAfxWmPressCloseButton(WPARAM wParam, LPARAM lParam);
132 void OnUpdateAppLook(CCmdUI* pCmdUI);
133
134 const CPoint GetMinWindowSize() const;
135
136 HMENU GetWindowMenuPopup(HMENU hMenuBar);
137 virtual void GetMessageString(UINT nID, Base::CFLString<wchar_t>& rMessage) const;
138
139 bool MoveInsideMonitor();
140
141 static int32_t GetResizingPosition(const CPoint& point, CWnd* pWnd, const float f32AddTolerance = 0.f);
142 static wchar_t* GetResizingMouseCursor(int32_t i32ResizingPosition);
143
144 const CResult RunPropertyShortKeyDown(UINT uiKey);
145
146 DECLARE_MESSAGE_MAP()
147 public:
148 afx_msg void OnFileNew();
149 afx_msg void OnUpdateFileNew(CCmdUI* pCmdUI);
150
151 afx_msg void OnFileOpen();
152 afx_msg void OnUpdateFileOpen(CCmdUI* pCmdUI);
153
154 afx_msg void OnCheckForUpdates();
155 afx_msg void OnUpdateCheckForUpdates(CCmdUI* pCmdUI);
156
157 afx_msg void OnInformationAbout();
158 afx_msg void OnUpdateInformationAbout(CCmdUI* pCmdUI);
159
160 afx_msg void OnInformationHelp();
161 afx_msg void OnInformationLicenseFeatures();
162
163 afx_msg void OnFindMenu();
164 afx_msg void OnUpdateSetFindMenu(CCmdUI* pCmdUI);
165
166 afx_msg void OnSetMenuFont();
167 afx_msg void OnUpdateSetMenuFont(CCmdUI* pCmdUI);
168
169 afx_msg void OnSetPropertyFont();
170 afx_msg void OnUpdateSetPropertyFont(CCmdUI* pCmdUI);
171
172 afx_msg void OnSetLogFont();
173 afx_msg void OnUpdateSetLogFont(CCmdUI* pCmdUI);
174
175 afx_msg void OnSetCodeFont();
176 afx_msg void OnUpdateSetCodeFont(CCmdUI* pCmdUI);
177
178 afx_msg void OnSetDefaultFont();
179 afx_msg void OnUpdateSetDefaultFont(CCmdUI* pCmdUI);
180
181 afx_msg void OnSetExampleSNAPFont();
182 afx_msg void OnUpdateSetExampleSNAPFont(CCmdUI* pCmdUI);
183
184 afx_msg void OnPaneMenu();
185 afx_msg void OnUpdatePaneMenu(CCmdUI* pCmdUI);
186
187 afx_msg void OnPaneExampleSNAP();
188 afx_msg void OnUpdatePaneExampleSNAP(CCmdUI* pCmdUI);
189
190 afx_msg void OnPaneLog();
191 afx_msg void OnUpdatePaneLog(CCmdUI* pCmdUI);
192
193 afx_msg void OnPaneCode();
194 afx_msg void OnUpdatePaneCode(CCmdUI* pCmdUI);
195
196 afx_msg void OnPaneColorTable();
197 afx_msg void OnUpdatePaneColorTable(CCmdUI* pCmdUI);
198
199 afx_msg void OnPaneViewGraph();
200 afx_msg void OnUpdatePaneViewGraph(CCmdUI* pCmdUI);
201
202 afx_msg void OnPaneSheet();
203 afx_msg void OnUpdatePaneSheet(CCmdUI* pCmdUI);
204
205 afx_msg void OnUpdateGenerateExampleCode(CCmdUI* pCmdUI);
206 afx_msg void OnGenerateExampleCode();
207
208 afx_msg void OnUpdateMenuUser(CCmdUI* pCmdUI);
209 afx_msg void OnMenuUser(UINT uID);
210
211 afx_msg void OnSysCommand(UINT nID, LPARAM lParam);
212 void GetClientArea(CRect& rtArea);
213 BOOL OnEraseMDIClientBackground(CDC* pDC);
214 virtual BOOL OnCloseDockingPane(CDockablePane* pWnd);
215 virtual BOOL OnCloseMiniFrame(CPaneFrameWnd* pWnd);
216 virtual void AdjustDockingLayout(HDWP hdwp = NULL);
217 virtual void RecalcLayout(BOOL bNotify = TRUE);
218 afx_msg void OnClose();
219 afx_msg UINT OnPowerBroadcast(UINT nPowerEvent, LPARAM nEventData);
220 afx_msg void OnFileSave();
221 afx_msg void OnUpdateFileSave(CCmdUI* pCmdUI);
222 afx_msg void OnFileSaveAs();
223 afx_msg void OnUpdateFileClose(CCmdUI* pCmdUI);
224 afx_msg void OnAppExit();
225 afx_msg void OnGetMinMaxInfo(MINMAXINFO* lpMMI);
226 afx_msg LRESULT OnMessageRunOnMainThread(WPARAM wParam, LPARAM lParam);
227 afx_msg LRESULT OnMessageRunOnMainThreadPost(WPARAM wParam, LPARAM lParam);
228 afx_msg LRESULT OnMessageAppTitleChanged(WPARAM wParam, LPARAM lParam);
229 virtual BOOL PreTranslateMessage(MSG* pMsg);
230 afx_msg void OnTimer(UINT_PTR nIDEvent);
231 afx_msg void OnNcCalcSize(BOOL bCalcValidRects, NCCALCSIZE_PARAMS* lpncsp);
232 afx_msg BOOL OnNcActivate(BOOL bActive);
233
234 protected:
235 volatile bool m_bTerminateApp;
236 bool m_bEnableClose;
237 bool m_bRecalc;
238 bool m_bAppTitleDirty;
239 bool m_bAdjust;
240 bool m_bCloseMsgActivated;
241 mutable bool m_bResizable;
242
243 Foundation::CFLPoint<int32_t> m_pointPrev;
244 int32_t m_i32PaneWidth;
245 int32_t m_i32PaneHeight;
246 int32_t m_i32WidthLimit;
247 int32_t m_i32HeightLimit;
248
249 CRect m_rtResizingOrgWindow;
250 CRect m_rtMaximizedWindow;
251
252 Base::CFLString<wchar_t> m_strInformationAbout;
253 Base::EOperatingSystemType m_eOperatingSystemType;
254
255 friend class CGUIManagerView;
256 friend class CGUIManagerPane;
257 friend class CGUIManager;
258 friend class CGUIMenuBar;
259 friend class CGUIMainFrameTabCtrl;
260 friend class CGUIMenuItemProperty;
261 public:
262 afx_msg BOOL OnCopyData(CWnd* pWnd, COPYDATASTRUCT* pCopyDataStruct);
263 afx_msg BOOL OnEraseBkgnd(CDC* pDC);
264 afx_msg void OnNcPaint();
265};
266 }
267}