FLImaging 7.4.14.3
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 "DefinitionsGUI.h"
18#include <map>
19
20namespace FLImaging
21{
22 namespace GUI
23 {
26 class CGUIManager;
27
28 class FL_EXPORT CGUIMainFrame : public CMDIFrameWndEx, public Base::CFLBase
29 {
30 DECLARE_DYNAMIC(CGUIMainFrame)
31
32 public:
33 CGUIMainFrame() noexcept;
34 CGUIMainFrame(const CGUIMainFrame& rh);
35
36 public:
46 virtual bool IsResizable() const;
47
57 virtual void SetResizable(bool bResizable = true);
58
70 virtual void SetBackgroundImagePadding(int32_t i32PaddingX, int32_t i32PaddingY);
71
83 virtual void GetBackgroundImagePadding(int32_t& i32PaddingX, int32_t& i32PaddingY) const;
84
96 virtual void SetBackgroundImageIntervalSpacing(int32_t i32IntervalSpacingX, int32_t i32IntervalSpacingY);
97
109 virtual void GetBackgroundImageIntervalSpacing(int32_t& i32IntervalSpacingX, int32_t& i32IntervalSpacingY) const;
110
120 virtual void SetBackgroundColor(COLORREF clr);
121
131 virtual COLORREF GetBackgroundColor() const;
132
142 virtual void SetBackgroundImage(const wchar_t* pWcsImagePath);
143
155 virtual void SetBackgroundImageLayout(EBackgroundImageLayout eMode = EBackgroundImageLayout_Tile);
156
168 virtual EBackgroundImageLayout GetBackgroundImageLayout() const;
169
179 virtual void SetAppIcon(const wchar_t* pWcsIconPath);
180
190 virtual void SetMenuBarLogoImage(const wchar_t* pWcsMenuBarLogoImagePath);
191
205 void EnableMenuBarButtons(bool bMinimize = true, bool bMaximize = true, bool bClose = true);
206
216 void EnableMinimizeButton(bool bEnable = true);
217
227 void EnableMaximizeButton(bool bEnable = true);
228
238 void EnableCloseButton(bool bEnable = true);
239
251 bool IsMinimizeButtonEnabled() const;
252
264 bool IsMaximizeButtonEnabled() const;
265
277 bool IsCloseButtonEnabled() const;
278
290 CGUIMenuBar* GetMenuBar();
291
303 CGUIPaneMenu* GetPaneMenu();
304
316 CGUIPaneExampleSNAP* GetPaneExampleSNAP();
317
329 CGUIPaneLog* GetPaneLog();
330
342 CGUIPaneCode* GetPaneCode();
343
355 CGUIPaneColorTable* GetPaneColorTable();
356
368 CGUIPaneViewGraph* GetPaneViewGraph();
369
381 CGUIPaneSheet* GetPaneSheet();
382
394 CGUIViewGraph* GetGraphViewInPane();
395
407 static const CResult EnableExitConfirmation(bool bEnable = true);
408
418 static bool IsExitConfirmationEnabled();
419
420 public:
421 virtual BOOL PreCreateWindow(CREATESTRUCT& cs);
422 virtual BOOL LoadFrame(UINT nIDResource, DWORD dwDefaultStyle = WS_OVERLAPPEDWINDOW | FWS_ADDTOTITLE, CWnd* pParentWnd = nullptr, CCreateContext* pContext = nullptr);
423
424 public: // 개발자 도구
425 CGUIPaneProperties* GetLastPaneProperties();
426 bool SetLastPaneProperties(CGUIPaneProperties* pPane);
427
428 virtual Base::CFLString<wchar_t> GetTextInformationAbout() const;
429 virtual void SetTextInformationAbout(const Base::CFLString<wchar_t>& str);
430 virtual void InitializeTextInformationAbout();
431
432 const CResult AddPane(CGUIPaneBase* pPane);
433 const CResult DeletePane(CGUIPaneBase* pPane);
434
435 void SetAppTheme(UINT nAppTheme);
436 UINT GetAppTheme();
437 void OnAppLook(UINT id);
438
439 void SetViewBaseLastFocused(CGUIViewImageBase* pView);
440 CGUIViewImageBase* GetViewBaseLastFocused();
441
442 void SetMenuItemPropertyForActivateView(CGUIMenuItemProperty* pMIPActivateView);
443
444 bool IsSetRecalcLayout();
445 void SetRecalcLayout(bool bSet);
446 void RecalcPaneSize();
447 std::vector<CGUIPaneProperties*>* GetVectorPaneProperties();
448 std::vector<CGUIPaneBase*>* GetVectorPanes();
449
450 const CResult ClearScreenSegmentationMode();
451
452 virtual bool IsTerminateAppRequested() const;
453 virtual void RequestTerminateApp(bool bTerminate = true);
454
455 bool SwitchTabs(bool bForwardDirection);
456
457 public:
458 virtual ~CGUIMainFrame();
459 #ifdef _DEBUG
460 virtual void AssertValid() const;
461 virtual void Dump(CDumpContext& dc) const;
462 #endif
463
464 DeclareGetClassType();
465
466 protected: // 컨트롤 모음이 포함된 멤버입니다.
467 UINT m_nAppTheme;
468
469 CGUIMenuBar m_wndMenuBar;
470 CGUIPaneMenu m_wndPaneMenu;
471 CGUIPaneExampleSNAP m_wndPaneExampleSNAP;
472 CGUIPaneLog m_wndPaneLog;
473 CGUIPaneCode m_wndPaneCode;
474 CGUIPaneViewGraph m_wndPaneViewGraph;
475 CGUIPaneSheet m_wndPaneSheet;
476 CGUIPaneColorTable m_wndPaneColorTable;
477
478 CGUIViewImageBase* m_pViewBaseLastFocused;
479 CGUIPaneProperties* m_pLastPaneProperties;
480 CGUIMenuItemProperty* m_pMIPActivateView;
481
482 EScreenSegmentationMode m_eScreenSegmentationMode;
483 CRect m_rtSegmentationPrevWindow;
484 int32_t m_i32SegmentationPrevShowCmd;
485
486 std::vector<CGUIPaneBase*>& m_vctPPaneBase;
487 std::vector<CGUIPaneProperties*>& m_vctPPaneProperties;
488
489 /* Background */
490 CBitmap* m_pBmpBackground;
491 Base::TPoint<int32_t> m_tpBackgroundPicSize;
492 Base::TPoint<int32_t> m_tpBackgroundPadding;
493 Base::TPoint<int32_t> m_tpBackgroundIntervalSpacing;
494 COLORREF m_clrBackground;
495 EBackgroundImageLayout m_eBackgroundImageLayout;
496 Base::CFLString<wchar_t> m_strBackgroundImagePath;
497 bool m_bBackgroundImageDirty;
498 Base::CFLString<wchar_t> m_strAppIconPath;
499 bool m_bAppIconDirty;
500 HICON m_hIconBig;
501 HICON m_hIconSmall;
502 Base::CFLString<wchar_t> m_strMenuBarLogoImagePath;
503 bool m_bMenuBarLogoImageDirty;
504
505 static bool g_bExitConfirmation;
506
507 protected:
508 virtual bool IsCloseEnabled() const;
509 virtual void SetCloseEnabled(bool bEnable);
510
511 virtual void InitializeBackgroundImageConfigurations();
512 virtual const CResult InternalLoadBackgroundImage();
513
514 virtual void OnReceiveBroadcast(const Base::CBroadcastMessage* pMessage) override;
515 afx_msg int OnCreate(LPCREATESTRUCT lpCreateStruct);
516 afx_msg LRESULT OnAfxWmPressCloseButton(WPARAM wParam, LPARAM lParam);
517 void OnUpdateAppLook(CCmdUI* pCmdUI);
518
519 const CPoint GetMinWindowSize() const;
520
521 HMENU GetWindowMenuPopup(HMENU hMenuBar);
522 virtual void GetMessageString(UINT nID, Base::CFLString<wchar_t>& rMessage) const;
523
524 bool MoveInsideMonitor();
525
526 static int32_t GetResizingPosition(const CPoint& point, CWnd* pWnd, float f32AddTolerance = 0.f);
527 static wchar_t* GetResizingMouseCursor(int32_t i32ResizingPosition);
528
529 const CResult RunPropertyShortKeyDown(UINT uiKey);
530 CDockingManager* GetDockingManagerPointer();
531
532 protected:
533 volatile bool m_bTerminateApp;
534 bool m_bEnableClose;
535 bool m_bRecalc;
536 bool m_bAppTitleDirty;
537 bool m_bAdjust;
538 bool m_bCloseMsgActivated;
539 mutable bool m_bResizable;
540
541 Foundation::CFLPoint<int32_t> m_pointPrev;
542 int32_t m_i32PaneWidth;
543 int32_t m_i32PaneHeight;
544 int32_t m_i32WidthLimit;
545 int32_t m_i32HeightLimit;
546
547 CRect m_rtResizingOrgWindow;
548 CRect m_rtMaximizedWindow;
549
550 Base::CFLString<wchar_t> m_strInformationAbout;
551 Base::EOperatingSystemType m_eOperatingSystemType;
552
553 friend class CGUIManagerView;
554 friend class CGUIManagerPane;
555 friend class CGUIManager;
556 friend class CGUIMenuBar;
557 friend class CGUIMainFrameTabCtrl;
558 friend class CGUIMenuItemProperty;
559 friend class CGUIViewImageLoaderImageBase;
560 friend class CGUIViewImageLoaderImageRaw;
561 friend class CGUIViewImageSaverImage;
562 friend class CGUIView3DLoaderBase;
563
564 DECLARE_MESSAGE_MAP()
565 public:
566 afx_msg void OnFileNew();
567 afx_msg void OnUpdateFileNew(CCmdUI* pCmdUI);
568
569 afx_msg void OnFileOpen();
570 afx_msg void OnUpdateFileOpen(CCmdUI* pCmdUI);
571
572 afx_msg void OnCheckForUpdates();
573 afx_msg void OnUpdateCheckForUpdates(CCmdUI* pCmdUI);
574
575 afx_msg void OnInformationAbout();
576 afx_msg void OnUpdateInformationAbout(CCmdUI* pCmdUI);
577
578 afx_msg void OnInformationHelp();
579 afx_msg void OnInformationLicenseFeatures();
580
581 afx_msg void OnFindMenu();
582 afx_msg void OnUpdateSetFindMenu(CCmdUI* pCmdUI);
583
584 afx_msg void OnSetMenuFont();
585 afx_msg void OnUpdateSetMenuFont(CCmdUI* pCmdUI);
586
587 afx_msg void OnSetPropertyFont();
588 afx_msg void OnUpdateSetPropertyFont(CCmdUI* pCmdUI);
589
590 afx_msg void OnSetLogFont();
591 afx_msg void OnUpdateSetLogFont(CCmdUI* pCmdUI);
592
593 afx_msg void OnSetCodeFont();
594 afx_msg void OnUpdateSetCodeFont(CCmdUI* pCmdUI);
595
596 afx_msg void OnSetDefaultFont();
597 afx_msg void OnUpdateSetDefaultFont(CCmdUI* pCmdUI);
598
599 afx_msg void OnSetExampleSNAPFont();
600 afx_msg void OnUpdateSetExampleSNAPFont(CCmdUI* pCmdUI);
601
602 afx_msg void OnPaneMenu();
603 afx_msg void OnUpdatePaneMenu(CCmdUI* pCmdUI);
604
605 afx_msg void OnPaneExampleSNAP();
606 afx_msg void OnUpdatePaneExampleSNAP(CCmdUI* pCmdUI);
607
608 afx_msg void OnPaneLog();
609 afx_msg void OnUpdatePaneLog(CCmdUI* pCmdUI);
610
611 afx_msg void OnPaneCode();
612 afx_msg void OnUpdatePaneCode(CCmdUI* pCmdUI);
613
614 afx_msg void OnPaneColorTable();
615 afx_msg void OnUpdatePaneColorTable(CCmdUI* pCmdUI);
616
617 afx_msg void OnPaneViewGraph();
618 afx_msg void OnUpdatePaneViewGraph(CCmdUI* pCmdUI);
619
620 afx_msg void OnPaneSheet();
621 afx_msg void OnUpdatePaneSheet(CCmdUI* pCmdUI);
622
623 afx_msg void OnUpdateGenerateExampleCode(CCmdUI* pCmdUI);
624 afx_msg void OnGenerateExampleCode();
625
626 afx_msg void OnUpdateMenuUser(CCmdUI* pCmdUI);
627 afx_msg void OnMenuUser(UINT uID);
628
629 afx_msg void OnUpdateSetTheme(CCmdUI* pCmdUI);
630 afx_msg void OnSetTheme(UINT uID);
631
632 afx_msg void OnSysCommand(UINT nID, LPARAM lParam);
633 void GetClientArea(CRect& rtArea);
634 BOOL OnEraseMDIClientBackground(CDC* pDC);
635 virtual BOOL OnCloseDockingPane(CDockablePane* pWnd);
636 virtual BOOL OnCloseMiniFrame(CPaneFrameWnd* pWnd);
637 virtual void AdjustDockingLayout(HDWP hdwp = NULL);
638 virtual void RecalcLayout(BOOL bNotify = TRUE);
639 afx_msg void OnClose();
640 afx_msg UINT OnPowerBroadcast(UINT nPowerEvent, LPARAM nEventData);
641 afx_msg void OnFileSave();
642 afx_msg void OnUpdateFileSave(CCmdUI* pCmdUI);
643 afx_msg void OnFileSaveAs();
644 afx_msg void OnUpdateFileClose(CCmdUI* pCmdUI);
645 afx_msg void OnAppExit();
646 afx_msg void OnUpdateAppExit(CCmdUI* pCmdUI);
647 afx_msg LRESULT OnThemeChanged();
648 afx_msg void OnSysColorChange();
649 afx_msg void OnGetMinMaxInfo(MINMAXINFO* lpMMI);
650 afx_msg LRESULT OnMessageRunOnMainThread(WPARAM wParam, LPARAM lParam);
651 afx_msg LRESULT OnMessageRunOnMainThreadPost(WPARAM wParam, LPARAM lParam);
652 afx_msg LRESULT OnMessageAppTitleChanged(WPARAM wParam, LPARAM lParam);
653 virtual BOOL PreTranslateMessage(MSG* pMsg);
654 afx_msg void OnTimer(UINT_PTR nIDEvent);
655 afx_msg void OnNcCalcSize(BOOL bCalcValidRects, NCCALCSIZE_PARAMS* lpncsp);
656 afx_msg BOOL OnNcActivate(BOOL bActive);
657 afx_msg BOOL OnCopyData(CWnd* pWnd, COPYDATASTRUCT* pCopyDataStruct);
658 afx_msg BOOL OnEraseBkgnd(CDC* pDC);
659 afx_msg void OnNcPaint();
660 afx_msg void OnDestroy();
661 virtual BOOL OnSetMenu(HMENU hmenu) override;
662};
663 }
664}
The menu item class associated with the property pane.
Definition GUIMenuItemProperty.h:48
A class of view base.
Definition GUIViewImageBase.h:44
Definition D2DObject.h:12
EBackgroundImageLayout
Enumeration for specifying how the background image is arranged.
Definition DefinitionsGUI.h:12723