2#include "GUIDefinitions.h"
9 class CGUIMainFrameTabCtrl;
10 class CGUIMenuBarUserDefinedInfo;
11 class CGUIMenuBarMDITab;
13 typedef std::function<void(
void*)> CMenuBarCallback;
14 #define MakeMenuBarCallback [=](void* pItem) -> void
16 class FL_EXPORT CGUIMenuBar :
public CMFCMenuBar,
public Base::CFLBase
20 virtual ~CGUIMenuBar();
23 virtual void OnFillBackground(CDC* pDC);
25 virtual void SetMinWidth(int32_t i32Minwidth);
26 virtual int32_t GetMinWidth()
const;
28 virtual void SetTitleRectMinWidth(int32_t i32Minwidth);
29 virtual int32_t GetTitleRectMinWidth()
const;
31 virtual void SetLeftItemMinPosX(int32_t i32Min);
32 virtual int32_t GetLeftItemMinPosX()
const;
34 virtual void SetButtonWidth(int32_t i32Width);
35 virtual int32_t GetButtonWidth()
const;
37 virtual CRect GetTitleBarRect()
const;
38 virtual void SetTitleBarRect(CRect rtTitleBar);
39 virtual int GetHitButton()
const;
41 virtual CWnd* GetMovableParent();
43 virtual int HitTest(CPoint point)
override;
45 virtual void SetHitArea(EGUIMenuBarHitArea eHitArea);
48 virtual CGUIMenuBarUserDefinedInfo* GetHitUserDefinedInfo(CPoint ptClient)
const;
50 virtual CGUIMenuBarMDITab* GetHitMDITab()
const;
52 virtual void SetToolTipText(
const Base::CFLString<wchar_t>& strToolTipText);
55 virtual void SetCurrentModelNameBkColor(COLORREF clrBk);
56 virtual COLORREF GetCurrentModelNameBkColor()
const;
58 virtual void SetCurrentModelNameTextColor(COLORREF clrText);
59 virtual COLORREF GetCurrentModelNameTextColor()
const;
61 virtual void SetCurrentModelNameRect(CRect rtTitleBar);
62 virtual CRect GetCurrentModelNameRect()
const;
64 virtual void ShowCurrentModelName(
bool bShow);
65 virtual bool IsCurrentModelNameVisible()
const;
68 virtual void SetCurrentUserIDBkColor(COLORREF clrBk);
69 virtual COLORREF GetCurrentUserIDBkColor()
const;
71 virtual void SetCurrentUserIDTextColor(COLORREF clrText);
72 virtual COLORREF GetCurrentUserIDTextColor()
const;
74 virtual void SetCurrentUserIDRect(CRect rtTitleBar);
75 virtual CRect GetCurrentUserIDRect()
const;
77 virtual void ShowCurrentUserID(
bool bShow);
78 virtual bool IsCurrentUserIDVisible()
const;
81 virtual void PushBackUserDefinedInfo(
const Base::CFLString<wchar_t>& strInfo, COLORREF clrBackground =
RGB(80, 80, 80), COLORREF clrText =
RGB(255, 255, 255),
bool bShow =
true, EGUIAlignment eAlign = EGUIAlignment_CENTER_CENTER, EGUIStringTrimming eStringTrimming = EGUIStringTrimming_EllipsisCharacter);
82 virtual void PushBackUserDefinedInfo(
const CGUIMenuBarUserDefinedInfo& refUDI);
84 virtual void PushFrontUserDefinedInfo(
const Base::CFLString<wchar_t>& strInfo, COLORREF clrBackground =
RGB(80, 80, 80), COLORREF clrText =
RGB(255, 255, 255),
bool bShow =
true, EGUIAlignment eAlign = EGUIAlignment_CENTER_CENTER, EGUIStringTrimming eStringTrimming = EGUIStringTrimming_EllipsisCharacter);
85 virtual void PushFrontUserDefinedInfo(
const CGUIMenuBarUserDefinedInfo& refUDI);
87 virtual int32_t GetUserDefinedInfoCount()
const;
88 virtual CGUIMenuBarUserDefinedInfo* PopBackUserDefinedInfo();
89 virtual CGUIMenuBarUserDefinedInfo* GetBackUserDefinedInfo()
const;
90 virtual CGUIMenuBarUserDefinedInfo* PopFrontUserDefinedInfo();
91 virtual CGUIMenuBarUserDefinedInfo* GetFrontUserDefinedInfo()
const;
93 virtual CGUIMenuBarUserDefinedInfo* GetUserDefinedInfoAt(int32_t i32Index)
const;
94 virtual int32_t GetUserDefinedInfoIndex(
const CGUIMenuBarUserDefinedInfo* pUDI)
const;
96 virtual const CResult SetUserDefinedInfoAt(int32_t i32Index,
const Base::CFLString<wchar_t>& strInfo, COLORREF clrBackground =
RGB(80, 80, 80), COLORREF clrText =
RGB(255, 255, 255),
bool bShow =
true, EGUIAlignment eAlign = EGUIAlignment_CENTER_CENTER, EGUIStringTrimming eStringTrimming = EGUIStringTrimming_EllipsisCharacter);
97 virtual const CResult SetUserDefinedInfoAt(int32_t i32Index,
const CGUIMenuBarUserDefinedInfo& refUDI);
99 virtual const CResult InsertUserDefinedInfoAt(int32_t i32Index,
const Base::CFLString<wchar_t>& strInfo, COLORREF clrBackground =
RGB(80, 80, 80), COLORREF clrText =
RGB(255, 255, 255),
bool bShow =
true, EGUIAlignment eAlign = EGUIAlignment_CENTER_CENTER, EGUIStringTrimming eStringTrimming = EGUIStringTrimming_EllipsisCharacter);
100 virtual const CResult InsertUserDefinedInfoAt(int32_t i32Index,
const CGUIMenuBarUserDefinedInfo& refUDI);
102 virtual const CResult RemoveUserDefinedInfoAt(int32_t i32Index);
103 virtual const CResult ClearUserDefinedInfo();
105 virtual void OnReceiveBroadcast(
const Base::CBroadcastMessage* pMessage)
override;
107 DeclareGetClassType();
111 Gdiplus::Color m_crBackground;
112 Gdiplus::Color m_crText;
113 COLORREF m_clrBackgroundCurrentModel;
114 COLORREF m_clrTextCurrentModel;
115 COLORREF m_clrBackgroundCurrentUserID;
116 COLORREF m_clrTextCurrentUserID;
120 Base::CFLString<wchar_t> m_strTitle;
122 bool m_bLButtonDblClk;
123 bool m_bMouseDragMaximize;
124 CPoint m_ptDragStart;
128 int32_t m_i32ButtonWidth;
129 int32_t m_i32ButtonHeight;
130 int32_t m_i32MinWidth;
131 int32_t m_i32ItemWidthLeft;
132 int32_t m_i32LeftItemMinPosX;
133 int32_t m_i32TitleBarMinWidth;
134 int32_t m_i32ItemWidthRight;
135 int32_t m_i32ItemCountRight;
136 int32_t m_i32ItemCount;
137 int32_t m_i32LeftStartPos;
139 int32_t m_i32HitButton;
142 int32_t m_i32AnimationIdx;
143 int32_t m_i32AnimationIdxDirection;
144 unsigned char m_crTitleBk;
145 CImage* m_pLogoImage;
146 int32_t m_i32BmpWidth, m_i32BmpHeight;
148 CRect m_rtTitleBarPrev;
149 CRect m_rtClose, m_rtRestore, m_rtMinimize;
150 CRect m_rtInfoCurrentModelName;
151 CRect m_rtInfoCurrentUserID;
155 bool m_bAboutToMaximize;
157 CPoint m_ptPrevMouse;
158 double m_f64MoveThreshold;
159 double m_f64MoveDistance;
161 void DoPaint(CDC* pDCPaint);
162 void DrawTitle(CDC* pDCPaint);
163 void UpdateAnimation();
166 std::vector<unsigned char> m_vctLogoBkClr;
168 CGUIMainFrameTabCtrl* m_pMainFrameTabCtrl =
nullptr;
169 bool m_bTrackMouse =
false;
171 CToolTipCtrl m_ToolTip;
172 Base::CFLString<wchar_t> m_strToolTipText;
174 bool m_bHitTimerInstalled =
false;
177 afx_msg
int OnCreate(LPCREATESTRUCT lpCreateStruct);
178 afx_msg BOOL OnEraseBkgnd(CDC* pDC);
179 afx_msg
void OnLButtonDown(UINT nFlags, CPoint point);
180 afx_msg
void OnLButtonUp(UINT nFlags, CPoint point);
181 afx_msg
void OnMouseMove(UINT nFlags, CPoint point);
182 afx_msg
void OnMouseLeave();
183 afx_msg
void OnLButtonDblClk(UINT nFlags, CPoint point);
184 afx_msg
void OnKillFocus(CWnd* pNewWnd);
185 afx_msg
void OnSize(UINT nType,
int cx,
int cy);
186 afx_msg
void OnMButtonUp(UINT nFlags, CPoint point);
187 afx_msg
void OnRButtonUp(UINT nFlags, CPoint point);
188 afx_msg
void OnDestroy();
189 afx_msg
void OnTimer(UINT_PTR nIDEvent);
190 DECLARE_MESSAGE_MAP()
191 virtual BOOL PreTranslateMessage(MSG* pMsg)override;
193 friend class CGUIMainFrame;
194 friend class CGUIMenuItemLogIn;
EGUIMenuBarHitArea
Menu bar 위에서 마우스가 위치한 영역입니다.
Definition GUIDefinitions.h:4341