FLImaging 7.3.16.1
GUIViewToolbar.h
1#pragma once
2
3#include <afxtoolbar.h>
4#include "GUIWndCtrlBase.h"
5#include "GUIStyledCtrlBase.h"
6#include "resource.h"
7
8namespace FLImaging
9{
10 namespace GUI
11 {
13 class CGUIManagerView;
14
15 class FL_EXPORT CGUIViewToolBar : public CMFCToolBar, public CGUIWndCtrlBase, public CGUIStyledCtrlBase
16 {
17 friend class CGUIChildFrameBase;
18 friend class CGUIViewImageBase;
19
20 public:
21 CGUIViewToolBar();
22 CGUIViewToolBar(const CGUIViewToolBar& rh);
23 virtual ~CGUIViewToolBar();
24
25 public:
26 virtual void MakeToolBarBehaveLikeTitleBar(bool bToolBarBehaveLikeTitleBar, UINT nCloseBtnID, UINT nMaximizeBtnID, UINT nMinimizeBtnID, UINT nRestoreBtnID);
27 virtual bool BehaveLikeTitleBar();
28 virtual void OnFillBackground(CDC* pDC);
29 virtual void SetText(Base::CFLString<wchar_t> strText);
30
31 virtual void SetCloseButtonID(UINT nID);
32 virtual void SetMaximizeButtonID(UINT nID);
33 virtual void SetMinimizeButtonID(UINT nID);
34 virtual void UpdateTheme();
35 void GetImageFromList(CImageList* lstImages, int nImage, CBitmap* destBitmap);
36
37 virtual void SetToolBarMinWidth(int32_t i32Minwidth);
38 virtual int32_t GetToolBarMinWidth();
39
40 virtual void SetTitleRectMinWidth(int32_t i32Minwidth);
41 virtual int32_t GetTitleRectMinWidth();
42
43 virtual void SetLeftItemMinPosX(int32_t i32Min);
44 virtual int32_t GetLeftItemMinPosX();
45
46 virtual void SetButtonWidth(int32_t i32Width);
47 virtual int32_t GetButtonWidth();
48
49 virtual void SetDrawEllipsisDropdown(bool bDraw);
50 virtual bool IsDrawEllipsisDropdown();
51
52 CRect GetTitleBarRect();
53 void SetTitleBarRect(CRect rtTitleBar);
54 int GetHitButton();
55
56 void SetParentView(CGUIViewImageBase* pView);
57 CGUIViewImageBase* GetParentView();
58
59 CWnd* GetMovableParent();
60
61 void UpdateTitleBarRect();
62
63 void LockUpdate();
64 void UnlockUpdate();
65
66 virtual void UpdatePosition();
67
68 virtual CMFCToolBarButton* GetCloseButton();
69 virtual CMFCToolBarButton* GetMaximizeButton();
70 virtual CMFCToolBarButton* GetRestoreButton();
71 virtual CMFCToolBarButton* GetMinimizeButton();
72
73 public:
74 virtual int HitTest(CPoint point) override;
75 Base::CFLString<wchar_t> m_strTitle;
76
77 protected:
78
79 bool m_bIsMoving;
80
81 bool m_bLButtonDown;
82 bool m_bLButtonDblClk;
83 CPoint m_ptDragStart;
84 CRect m_rtEllipsisDropdown;
85
86 int32_t m_i32ButtonWidth;
87 int32_t m_i32SeparatorWidth;
88 int32_t m_i32ButtonHeight;
89 int32_t m_i32MinWidth;
90 int32_t m_i32ItemWidthLeft;
91 int32_t m_i32LeftItemMinPosX;
92 int32_t m_i32TitleBarMinWidth;
93 int32_t m_i32ItemWidthRight;
94 int32_t m_i32ItemCountRight; // CLOSE, MAXIMIZE, MINIMIZE button
95 int32_t m_i32ItemCount;
96 int32_t m_i32LeftStartPos;
97 std::vector<int32_t>& m_vctStartPos;
98
99 int32_t m_iHitButton;
100
101 UINT m_nCloseButtonID;
102 UINT m_nMaximizeButtonID;
103 UINT m_nRestoreButtonID;
104 UINT m_nMinimizeButtonID;
105 UINT m_nCloseButtonIndex;
106 UINT m_nMaximizeButtonIndex;
107 UINT m_nRestoreButtonIndex;
108 UINT m_nMinimizeButtonIndex;
109
110 CRect m_rtTitleBar;
111
112 CWnd* m_pParent;
113 bool m_bFixedParentView;
114 bool m_bInit;
115
116 CPoint m_ptPrevMouse;
117 double m_f64MoveThreshold;
118 double m_f64MoveDistance;
119
120 CGUIViewImageBase* m_pParentView;
121
122 bool m_bSyncWindowTitle;
123 bool m_bToolBarBehaveLikeTitleBar;
124 bool m_bDrawEllipsisDropdown;
125
126 bool m_bLockUpdate;
127
128 CRect m_crPrevWindow;
129 bool m_bMouseDragMaximize;
130
131 Base::CPerformanceCounter m_pcLastUpdateCounter;
132 volatile bool m_bUpdateAvailable;
133 volatile bool m_bUpdateBlocked;
134 volatile bool m_bRemainingUpdateThread;
135 HANDLE m_hThreadRemainingUpdate;
136
137 bool m_bWindowSizeUpdated;
138
139 virtual void JudgeUpdateAvailable();
140 virtual bool IsUpdateAvailable();
141 static unsigned __stdcall InternalThreadRemainingUpdate(void* pParam);
142 void InitializeThreadRemainingUpdate();
143 void TerminateThreadRemainingUpdate();
144
145
146 void DoPaint(CDC* pDCPaint);
147 BOOL DrawButton(CDC* pDC, CMFCToolBarButton* pButton, CMFCToolBarImages* pImages, BOOL bHighlighted, BOOL bDrawDisabledImages);
148
149 public:
150 DECLARE_MESSAGE_MAP()
151 afx_msg int OnCreate(LPCREATESTRUCT lpCreateStruct);
152 afx_msg BOOL OnEraseBkgnd(CDC* pDC);
153 afx_msg void OnLButtonDown(UINT nFlags, CPoint point);
154 afx_msg void OnLButtonUp(UINT nFlags, CPoint point);
155 afx_msg void OnMouseMove(UINT nFlags, CPoint point);
156 afx_msg void OnKillFocus(CWnd* pNewWnd);
157 afx_msg void OnLButtonDblClk(UINT nFlags, CPoint point);
158 afx_msg void OnRButtonDown(UINT nFlags, CPoint point);
159 afx_msg void OnMButtonDown(UINT nFlags, CPoint point);
160 afx_msg void OnNcPaint();
161 afx_msg void OnSize(UINT nType, int cx, int cy);
162 afx_msg void OnDestroy();
163
164 friend class CGUIManagerView;
165 friend class CGUIViewGraph;
166};
167 }
168}
뷰의 기반 클래스
Definition GUIViewImageBase.h:43
Definition D2DObject.h:12