📄 bcgptabwnd.h
字号:
#if !defined(AFX_BCGPTABWND_H__2ADBF81D_1F51_45D8_9FDB_FF3B13F30CAE__INCLUDED_)
#define AFX_BCGPTABWND_H__2ADBF81D_1F51_45D8_9FDB_FF3B13F30CAE__INCLUDED_
#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
// BCGPTabWnd.h : header file
//
#ifndef BCGP_NO_TABCTRL
#ifndef __AFXTEMPL_H__
#include "afxtempl.h"
#endif
#include "BCGCBPro.h"
#include "BCGPBaseControlBar.h"
#include "BCGPBaseTabWnd.h"
#include "BCGPButton.h"
/////////////////////////////////////////////////////////////////////////////
// CBCGPTabWnd window
class CBCGPTabInfo;
class CBCGTabButton : public CBCGPButton
{
virtual void OnFillBackground (CDC* pDC, const CRect& rectClient);
virtual void OnDrawBorder (CDC* pDC, CRect& rectClient, UINT uiState);
};
class BCGCBPRODLLEXPORT CBCGPTabWnd : public CBCGPBaseTabWnd
{
friend class CBCGPMainClientAreaWnd;
DECLARE_DYNCREATE(CBCGPTabWnd)
// Construction
public:
CBCGPTabWnd();
enum Style
{
STYLE_3D = 0,
STYLE_FLAT = 1,
STYLE_FLAT_SHARED_HORZ_SCROLL = 2,
STYLE_3D_SCROLLED = 3,
STYLE_3D_ONENOTE = 4
};
// Operations
public:
// Create methods:
BOOL Create (Style style, const RECT& rect, CWnd* pParentWnd, UINT nID,
Location location = LOCATION_BOTTOM,
BOOL bCloseBtn = FALSE);
virtual BOOL SetImageList (UINT uiID, int cx = 15,
COLORREF clrTransp = RGB (255, 0, 255));
virtual BOOL SetImageList (HIMAGELIST hImageList);
virtual void RecalcLayout ();
virtual void EnableInPlaceEdit (BOOL bEnable);
virtual void CalcRectEdit (CRect& rectEdit)
{
ASSERT_VALID (this);
rectEdit.DeflateRect (m_nTabsHeight / 2, 1);
}
virtual BOOL SetActiveTab (int iTab);
virtual BOOL EnsureVisible (int iTab);
// Scrolling methods:
BOOL SynchronizeScrollBar (SCROLLINFO* pScrollInfo = NULL);
CScrollBar* GetScrollBar ()
{
return m_bSharedScroll ? &m_wndScrollWnd : NULL;
}
virtual void HideSingleTab (BOOL bHide = TRUE);
void HideActiveWindowHorzScrollBar ();
virtual DROPEFFECT OnDragEnter(COleDataObject* pDataObject, DWORD dwKeyState, CPoint point);
virtual DROPEFFECT OnDragOver(COleDataObject* pDataObject, DWORD dwKeyState, CPoint point);
protected:
virtual CWnd* FindTargetWnd (const CPoint& pt);
virtual void AdjustTabs ();
virtual void AdjustTabsScroll ();
virtual void AdjustWndScroll ();
void RelayEvent(UINT message, WPARAM wParam, LPARAM lParam);
void SetTabsHeight ();
void ReposButtons (CPoint pt, CSize sizeButton, BOOL bHide);
void UpdateScrollButtonsState ();
BOOL ModifyTabStyle (Style style);
// Attributes
public:
virtual BOOL IsPtInTabArea (CPoint point) const;
virtual BOOL AllowDestroyEmptyTabbedBar () const {return TRUE;}
virtual int GetTabFromPoint (CPoint& pt) const;
void SetFlatFrame (BOOL bFlat = TRUE, BOOL bRepaint = TRUE)
{
if (m_bFlatFrame != bFlat)
{
m_bFlatFrame = bFlat;
if (bRepaint && GetSafeHwnd () != NULL)
{
Invalidate ();
UpdateWindow ();
}
}
}
BOOL IsFlatFrame () const
{
return m_bFlatFrame;
}
void HideInactiveWindow (BOOL bHide = TRUE)
{
m_bHideInactiveWnd = bHide;
}
void AutoSizeWindow (BOOL bAutoSize = TRUE)
{
m_bAutoSizeWindow = bAutoSize;
}
void GetWndArea (CRect& rect) const
{
rect = m_rectWndArea;
}
void GetTabArea (CRect& rectTabAreaTop, CRect& rectTabAreaBottom) const
{
rectTabAreaTop.SetRectEmpty ();
rectTabAreaBottom.SetRectEmpty ();
(m_location == LOCATION_TOP) ? rectTabAreaTop = m_rectTabsArea :
rectTabAreaBottom = m_rectTabsArea;
}
virtual void GetTabsRect (CRect& rect) const
{
rect = m_rectTabsArea;
}
virtual int GetTabsHeight () const
{
if (!m_bSharedScroll)
{
int nVisiableTabs = GetVisibleTabsNum ();
if ((m_bHideSingleTab && nVisiableTabs <= 1) ||
(m_bHideNoTabs && nVisiableTabs == 0))
{
return 0;
}
}
return m_nTabsHeight;
}
virtual BOOL IsFlatTab () const
{
return m_bFlat;
}
BOOL IsSharedScroll () const
{
return m_bSharedScroll;
}
virtual BOOL IsOneNoteStyle () const
{
return m_bIsOneNoteStyle;
}
void HideNoTabs (BOOL bHide = TRUE);
void SetActiveTabBoldFont (BOOL bIsBold = TRUE);
BOOL IsActiveTabBoldFont () const
{
return m_bIsActiveTabBold;
}
void SetDrawFrame (BOOL bDraw = TRUE);
BOOL IsDrawFrame () const
{
return m_bDrawFrame;
}
static BOOL m_bEnableActivate;
virtual int GetFirstVisibleTabNum () const
{
return m_nFirstVisibleTab; // For m_bIsOneNoteStyle only!
}
virtual void SwapTabs (int nFisrtTabID, int nSecondTabID);
virtual void MoveTab (int nSource, int nDest);
protected:
BOOL m_bFlat; // Is flat (Excell-like) mode
BOOL m_bIsOneNoteStyle; // Is OneNote-like mode
BOOL m_bSharedScroll; // Have a scrollbar shared with active window
BOOL m_bScroll; // Scroll buttons
BOOL m_bCloseBtn; // Close button
int m_nScrollBarRight; // Scrollbar right side
CRect m_rectTabsArea; // Tabs area
CRect m_rectWndArea; // Child window area
CScrollBar m_wndScrollWnd; // Active window horizontal scroll bar
CBCGTabButton m_btnScrollLeft;
CBCGTabButton m_btnScrollRight;
CBCGTabButton m_btnScrollFirst;
CBCGTabButton m_btnScrollLast;
CBCGTabButton m_btnClose;
CList<HWND, HWND> m_lstButtons;
int m_nTabsHorzOffset;
int m_nTabsHorzOffsetMax;
int m_nTabsTotalWidth;
int m_nFirstVisibleTab;
int m_nHorzScrollWidth; // Shared scrollbar width
CRect m_rectTabSplitter; // Splitter between tabs and scrollbar
BOOL m_bTrackSplitter; // Is splitter tracked?
BOOL m_bFlatFrame; // Is frame flat?
BOOL m_bAutoSizeWindow; // Auto-resize tab widnows
BOOL m_bTransparent;
BOOL m_bTopEdge;
BOOL m_bDrawFrame; // Draw frame around window area
BOOL m_bHideNoTabs; // Hide tabs are when no tabs are availible
BOOL m_bIsActiveTabBold; // Active tab text is drawing bold
// Overrides
// ClassWizard generated virtual function overrides
//{{AFX_VIRTUAL(CBCGPTabWnd)
public:
virtual BOOL PreTranslateMessage(MSG* pMsg);
protected:
virtual BOOL OnCommand(WPARAM wParam, LPARAM lParam);
//}}AFX_VIRTUAL
virtual BOOL OnNotify(WPARAM, LPARAM lParam, LRESULT* pResult);
virtual void Draw3DTab (CDC* pDC, CBCGPTabInfo* pTab, BOOL bActive);
virtual void DrawFlatTab (CDC* pDC, CBCGPTabInfo* pTab, BOOL bActive);
// Implementation
public:
virtual ~CBCGPTabWnd();
// Generated message map functions
protected:
//{{AFX_MSG(CBCGPTabWnd)
afx_msg void OnDestroy();
afx_msg void OnPaint();
afx_msg void OnSize(UINT nType, int cx, int cy);
afx_msg void OnLButtonDown(UINT nFlags, CPoint point);
afx_msg int OnCreate(LPCREATESTRUCT lpCreateStruct);
afx_msg BOOL OnEraseBkgnd(CDC* pDC);
afx_msg void OnLButtonDblClk(UINT nFlags, CPoint point);
afx_msg void OnHScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar);
afx_msg BOOL OnSetCursor(CWnd* pWnd, UINT nHitTest, UINT message);
afx_msg void OnLButtonUp(UINT nFlags, CPoint point);
afx_msg void OnMouseMove(UINT nFlags, CPoint point);
afx_msg void OnCancelMode();
afx_msg void OnSysColorChange();
afx_msg void OnSettingChange(UINT uFlags, LPCTSTR lpszSection);
afx_msg void OnSetFocus(CWnd* pOldWnd);
//}}AFX_MSG
DECLARE_MESSAGE_MAP()
};
//////////////////////////////////////////////////////////////////////////////
// CBCGPTabWnd notification messages:
extern BCGCBPRODLLEXPORT UINT BCGM_ON_HSCROLL;
#endif // BCGP_NO_TABCTRL
/////////////////////////////////////////////////////////////////////////////
//{{AFX_INSERT_LOCATION}}
// Microsoft Visual C++ will insert additional declarations immediately before the previous line.
#endif // !defined(AFX_BCGPTABWND_H__2ADBF81D_1F51_45D8_9FDB_FF3B13F30CAE__INCLUDED_)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -