diff options
Diffstat (limited to 'mmc_updater/depends/win32cpp/rebar.h')
-rw-r--r-- | mmc_updater/depends/win32cpp/rebar.h | 709 |
1 files changed, 0 insertions, 709 deletions
diff --git a/mmc_updater/depends/win32cpp/rebar.h b/mmc_updater/depends/win32cpp/rebar.h deleted file mode 100644 index 1a339dca..00000000 --- a/mmc_updater/depends/win32cpp/rebar.h +++ /dev/null @@ -1,709 +0,0 @@ -// Win32++ Version 7.2 -// Released: 5th AUgust 2011 -// -// David Nash -// email: dnash@bigpond.net.au -// url: https://sourceforge.net/projects/win32-framework -// -// -// Copyright (c) 2005-2011 David Nash -// -// Permission is hereby granted, free of charge, to -// any person obtaining a copy of this software and -// associated documentation files (the "Software"), -// to deal in the Software without restriction, including -// without limitation the rights to use, copy, modify, -// merge, publish, distribute, sublicense, and/or sell -// copies of the Software, and to permit persons to whom -// the Software is furnished to do so, subject to the -// following conditions: -// -// The above copyright notice and this permission notice -// shall be included in all copies or substantial portions -// of the Software. -// -// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF -// ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED -// TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A -// PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT -// SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR -// ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN -// ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE -// OR OTHER DEALINGS IN THE SOFTWARE. -// -//////////////////////////////////////////////////////// - - -#ifndef _WIN32XX_REBAR_H_ -#define _WIN32XX_REBAR_H_ - -#include "wincore.h" -#include "gdi.h" - - -namespace Win32xx -{ - - struct ReBarTheme - { - BOOL UseThemes; // TRUE if themes are used - COLORREF clrBkgnd1; // Colour 1 for rebar background - COLORREF clrBkgnd2; // Colour 2 for rebar background - COLORREF clrBand1; // Colour 1 for rebar band background. Use NULL if not required - COLORREF clrBand2; // Colour 2 for rebar band background. Use NULL if not required - BOOL FlatStyle; // Bands are rendered with flat rather than raised style - BOOL BandsLeft; // Position bands left on rearrange - BOOL LockMenuBand; // Lock MenuBar's band in dedicated top row, without gripper - BOOL RoundBorders; // Use rounded band borders - BOOL ShortBands; // Allows bands to be shorter than maximum available width - BOOL UseLines; // Displays horizontal lines between bands - }; - - //////////////////////////////////// - // Declaration of the CReBar class - // - class CReBar : public CWnd - { - public: - CReBar(); - virtual ~CReBar(); - - // Operations - BOOL DeleteBand(const int nBand) const; - int HitTest(RBHITTESTINFO& rbht); - HWND HitTest(POINT pt); - int IDToIndex(UINT uBandID) const; - BOOL InsertBand(const int nBand, REBARBANDINFO& rbbi) const; - BOOL IsBandVisible(int nBand) const; - void MaximizeBand(UINT uBand, BOOL fIdeal = FALSE); - void MinimizeBand(UINT uBand); - BOOL MoveBand(UINT uFrom, UINT uTo); - void MoveBandsLeft(); - BOOL ResizeBand(const int nBand, const CSize& sz) const; - BOOL ShowGripper(int nBand, BOOL fShow) const; - BOOL ShowBand(int nBand, BOOL fShow) const; - BOOL SizeToRect(CRect& rect) const; - - // Attributes - int GetBand(const HWND hWnd) const; - CRect GetBandBorders(int nBand) const; - int GetBandCount() const; - BOOL GetBandInfo(const int nBand, REBARBANDINFO& rbbi) const; - CRect GetBandRect(int i) const; - UINT GetBarHeight() const; - BOOL GetBarInfo(REBARINFO& rbi) const; - HWND GetMenuBar() {return m_hMenuBar;} - ReBarTheme& GetReBarTheme() {return m_Theme;} - UINT GetRowCount() const; - int GetRowHeight(int nRow) const; - UINT GetSizeofRBBI() const; - HWND GetToolTips() const; - BOOL SetBandBitmap(const int nBand, const CBitmap* pBackground) const; - BOOL SetBandColor(const int nBand, const COLORREF clrFore, const COLORREF clrBack) const; - BOOL SetBandInfo(const int nBand, REBARBANDINFO& rbbi) const; - BOOL SetBarInfo(REBARINFO& rbi) const; - void SetMenuBar(HWND hMenuBar) {m_hMenuBar = hMenuBar;} - void SetReBarTheme(ReBarTheme& Theme); - - protected: - //Overridables - virtual BOOL OnEraseBkgnd(CDC* pDC); - virtual void PreCreate(CREATESTRUCT& cs); - virtual void PreRegisterClass(WNDCLASS &wc); - virtual LRESULT WndProcDefault(UINT uMsg, WPARAM wParam, LPARAM lParam); - - private: - CReBar(const CReBar&); // Disable copy construction - CReBar& operator = (const CReBar&); // Disable assignment operator - - ReBarTheme m_Theme; - BOOL m_bIsDragging; - HWND m_hMenuBar; - LPARAM m_Orig_lParam; - }; - -} - -//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - - -namespace Win32xx -{ - - /////////////////////////////////// - // Definitions for the CReBar class - // - inline CReBar::CReBar() : m_bIsDragging(FALSE), m_hMenuBar(0), m_Orig_lParam(0L) - { - ZeroMemory(&m_Theme, sizeof(ReBarTheme)); - } - - inline CReBar::~CReBar() - { - } - - inline BOOL CReBar::DeleteBand(int nBand) const - // Deletes a band from a rebar control. - { - assert(::IsWindow(m_hWnd)); - return (BOOL)SendMessage(RB_DELETEBAND, nBand, 0L); - } - - inline int CReBar::GetBand(HWND hWnd) const - // Returns the zero based band number for this window handle - { - assert(::IsWindow(m_hWnd)); - - int nResult = -1; - if (NULL == hWnd) return nResult; - - for (int nBand = 0; nBand < GetBandCount(); ++nBand) - { - REBARBANDINFO rbbi = {0}; - rbbi.cbSize = GetSizeofRBBI(); - rbbi.fMask = RBBIM_CHILD; - GetBandInfo(nBand, rbbi); - if (rbbi.hwndChild == hWnd) - nResult = nBand; - } - - return nResult; - } - - inline CRect CReBar::GetBandBorders(int nBand) const - // Retrieves the borders of a band. - { - assert(::IsWindow(m_hWnd)); - - CRect rc; - SendMessage(RB_GETBANDBORDERS, nBand, (LPARAM)&rc); - return rc; - } - - inline int CReBar::GetBandCount() const - // Retrieves the count of bands currently in the rebar control. - { - assert(::IsWindow(m_hWnd)); - return (int)SendMessage(RB_GETBANDCOUNT, 0L, 0L); - } - - inline BOOL CReBar::GetBandInfo(int nBand, REBARBANDINFO& rbbi) const - // Retrieves information about a specified band in a rebar control. - { - assert(::IsWindow(m_hWnd)); - assert(nBand >= 0); - - // REBARBANDINFO describes individual BAND characteristics - rbbi.cbSize = GetSizeofRBBI(); - return (BOOL)SendMessage(RB_GETBANDINFO, nBand, (LPARAM)&rbbi); - } - - inline CRect CReBar::GetBandRect(int i) const - // Retrieves the bounding rectangle for a given band in a rebar control. - { - assert(::IsWindow(m_hWnd)); - CRect rc; - SendMessage(RB_GETRECT, i, (LPARAM)&rc); - return rc; - } - - inline UINT CReBar::GetBarHeight() const - // Retrieves the height of the rebar control. - { - assert(::IsWindow(m_hWnd)); - return (UINT)SendMessage(RB_GETBARHEIGHT, 0L, 0L); - } - - inline BOOL CReBar::GetBarInfo(REBARINFO& rbi) const - // Retrieves information about the rebar control and the image list it uses. - { - assert(::IsWindow(m_hWnd)); - - // REBARINFO describes overall rebar control characteristics - rbi.cbSize = GetSizeofRBBI(); - return (BOOL)SendMessage(RB_GETBARINFO, 0L, (LPARAM)&rbi); - } - - inline UINT CReBar::GetRowCount() const - // Retrieves the number of rows of bands in a rebar control. - { - assert(::IsWindow(m_hWnd)); - return (UINT)SendMessage(RB_GETROWCOUNT, 0L, 0L); - } - - inline int CReBar::GetRowHeight(int nRow) const - // Retrieves the height of a specified row in a rebar control. - { - assert(::IsWindow(m_hWnd)); - return (int)SendMessage(RB_GETROWHEIGHT, nRow, 0L); - } - - inline UINT CReBar::GetSizeofRBBI() const - // The size of the REBARBANDINFO struct changes according to _WIN32_WINNT - // sizeof(REBARBANDINFO) can report an incorrect size for older Window versions, - // or newer Window version without XP themes enabled. - // Use this function to get a safe size for REBARBANDINFO. - { - assert(::IsWindow(m_hWnd)); - - UINT uSizeof = sizeof(REBARBANDINFO); - - #if defined REBARBANDINFO_V6_SIZE // only defined for VS2008 or higher - #if !defined (_WIN32_WINNT) || _WIN32_WINNT >= 0x0600 - if ((GetWinVersion() < 2600) || (GetComCtlVersion() < 610)) // Vista and Vista themes? - uSizeof = REBARBANDINFO_V6_SIZE; - #endif - #endif - - return uSizeof; - } - - inline HWND CReBar::GetToolTips() const - // Retrieves the handle to any ToolTip control associated with the rebar control. - { - assert(::IsWindow(m_hWnd)); - return (HWND)SendMessage(RB_GETTOOLTIPS, 0L, 0L); - } - - inline int CReBar::HitTest(RBHITTESTINFO& rbht) - // Determines which portion of a rebar band is at a given point on the screen, - // if a rebar band exists at that point. - { - assert(::IsWindow(m_hWnd)); - return (int)SendMessage(RB_HITTEST, 0L, (LPARAM)&rbht); - } - - inline HWND CReBar::HitTest(POINT pt) - // Return the child HWND at the given point - { - assert(::IsWindow(m_hWnd)); - - // Convert the point to client co-ordinates - ScreenToClient(pt); - - // Get the rebar band with the point - RBHITTESTINFO rbhti = {0}; - rbhti.pt = pt; - int iBand = HitTest(rbhti); - - if (iBand >= 0) - { - // Get the rebar band's hWnd - REBARBANDINFO rbbi = {0}; - rbbi.cbSize = GetSizeofRBBI(); - rbbi.fMask = RBBIM_CHILD; - GetBandInfo(iBand, rbbi); - - return rbbi.hwndChild; - } - else - return NULL; - } - - inline int CReBar::IDToIndex(UINT uBandID) const - // Converts a band identifier to a band index in a rebar control. - { - assert(::IsWindow(m_hWnd)); - return (int)SendMessage(RB_IDTOINDEX, (WPARAM)uBandID, 0L); - } - - inline BOOL CReBar::InsertBand(int nBand, REBARBANDINFO& rbbi) const - // Inserts a new band in a rebar control. - { - assert(::IsWindow(m_hWnd)); - - rbbi.cbSize = GetSizeofRBBI(); - return (BOOL)SendMessage(RB_INSERTBAND, nBand, (LPARAM)&rbbi); - } - - inline BOOL CReBar::IsBandVisible(int nBand) const - // Returns true if the band is visible - { - assert(::IsWindow(m_hWnd)); - - REBARBANDINFO rbbi = {0}; - rbbi.cbSize = GetSizeofRBBI(); - rbbi.fMask = RBBIM_STYLE; - GetBandInfo(nBand, rbbi); - - return !(rbbi.fStyle & RBBS_HIDDEN); - } - - inline BOOL CReBar::OnEraseBkgnd(CDC* pDC) - { - BOOL Erase = TRUE; - if (!m_Theme.UseThemes) - Erase = FALSE; - - if (!m_Theme.clrBkgnd1 && !m_Theme.clrBkgnd2 && !m_Theme.clrBand1 && !m_Theme.clrBand2) - Erase = FALSE; - - if (Erase) - { - CRect rcReBar = GetClientRect(); - int BarWidth = rcReBar.Width(); - int BarHeight = rcReBar.Height(); - - // Create and set up our memory DC - CMemDC MemDC(pDC); - MemDC.CreateCompatibleBitmap(pDC, BarWidth, BarHeight); - - // Draw to ReBar background to the memory DC - rcReBar.right = 600; - MemDC.GradientFill(m_Theme.clrBkgnd1, m_Theme.clrBkgnd2, rcReBar, TRUE); - if (BarWidth >= 600) - { - rcReBar.left = 600; - rcReBar.right = BarWidth; - MemDC.SolidFill(m_Theme.clrBkgnd2, rcReBar); - } - - if (m_Theme.clrBand1 || m_Theme.clrBand2) - { - // Draw the individual band backgrounds - for (int nBand = 0 ; nBand < GetBandCount(); ++nBand) - { - if (IsBandVisible(nBand)) - { - if (nBand != GetBand(m_hMenuBar)) - { - // Determine the size of this band - CRect rcBand = GetBandRect(nBand); - - // Determine the size of the child window - REBARBANDINFO rbbi = {0}; - rbbi.cbSize = GetSizeofRBBI(); - rbbi.fMask = RBBIM_CHILD ; - GetBandInfo(nBand, rbbi); - CRect rcChild; - ::GetWindowRect(rbbi.hwndChild, &rcChild); - int ChildWidth = rcChild.right - rcChild.left; - - // Determine our drawing rectangle - CRect rcDraw = rcBand; - rcDraw.bottom = rcDraw.top + (rcBand.bottom - rcBand.top)/2; - int xPad = IsXPThemed()? 2: 0; - rcDraw.left -= xPad; - - // Fill the Source CDC with the band's background - CMemDC SourceDC(pDC); - SourceDC.CreateCompatibleBitmap(pDC, BarWidth, BarHeight); - CRect rcBorder = GetBandBorders(nBand); - rcDraw.right = rcBand.left + ChildWidth + rcBorder.left; - SourceDC.SolidFill(m_Theme.clrBand1, rcDraw); - rcDraw.top = rcDraw.bottom; - rcDraw.bottom = rcBand.bottom; - SourceDC.GradientFill(m_Theme.clrBand1, m_Theme.clrBand2, rcDraw, FALSE); - - // Set Curve amount for rounded edges - int Curve = m_Theme.RoundBorders? 12 : 0; - - // Create our mask for rounded edges using RoundRect - CMemDC MaskDC(pDC); - MaskDC.CreateCompatibleBitmap(pDC, BarWidth, BarHeight); - - rcDraw.top = rcBand.top; - if (!m_Theme.FlatStyle) - ::InflateRect(&rcDraw, 1, 1); - - int left = rcDraw.left; - int right = rcDraw.right; - int top = rcDraw.top; - int bottom = rcDraw.bottom; - int cx = rcDraw.right - rcBand.left + xPad; - int cy = rcDraw.bottom - rcBand.top; - - if (m_Theme.FlatStyle) - { - MaskDC.SolidFill(RGB(0,0,0), rcDraw); - MaskDC.BitBlt(left, top, cx, cy, &MaskDC, left, top, PATINVERT); - MaskDC.RoundRect(left, top, right, bottom, Curve, Curve); - } - else - { - MaskDC.SolidFill(RGB(0,0,0), rcDraw); - MaskDC.RoundRect(left, top, right, bottom, Curve, Curve); - MaskDC.BitBlt(left, top, cx, cy, &MaskDC, left, top, PATINVERT); - } - - // Copy Source DC to Memory DC using the RoundRect mask - MemDC.BitBlt(left, top, cx, cy, &SourceDC, left, top, SRCINVERT); - MemDC.BitBlt(left, top, cx, cy, &MaskDC, left, top, SRCAND); - MemDC.BitBlt(left, top, cx, cy, &SourceDC, left, top, SRCINVERT); - - // Extra drawing to prevent jagged edge while moving bands - if (m_bIsDragging) - { - CClientDC ReBarDC(this); - ReBarDC.BitBlt(rcDraw.right - ChildWidth, rcDraw.top, ChildWidth, cy, &MemDC, rcDraw.right - ChildWidth, rcDraw.top, SRCCOPY); - } - } - } - } - } - - if (m_Theme.UseLines) - { - // Draw lines between bands - for (int j = 0; j < GetBandCount()-1; ++j) - { - rcReBar = GetBandRect(j); - rcReBar.left = MAX(0, rcReBar.left - 4); - rcReBar.bottom +=2; - MemDC.DrawEdge(rcReBar, EDGE_ETCHED, BF_BOTTOM | BF_ADJUST); - } - } - - // Copy the Memory DC to the window's DC - pDC->BitBlt(0, 0, BarWidth, BarHeight, &MemDC, 0, 0, SRCCOPY); - } - - return Erase; - } - - inline void CReBar::PreCreate(CREATESTRUCT &cs) - // Sets the CREATESTRUCT paramaters prior to window creation - { - cs.style = WS_VISIBLE | WS_CHILD | WS_CLIPCHILDREN | WS_CLIPSIBLINGS | - CCS_NODIVIDER | RBS_VARHEIGHT | RBS_BANDBORDERS ; - - cs.cy = 100; - } - - inline void CReBar::PreRegisterClass(WNDCLASS &wc) - { - // Set the Window Class - wc.lpszClassName = REBARCLASSNAME; - } - - inline void CReBar::MaximizeBand(UINT uBand, BOOL fIdeal /*= FALSE*/) - // Resizes a band in a rebar control to either its ideal or largest size. - { - assert(::IsWindow(m_hWnd)); - SendMessage(RB_MAXIMIZEBAND, (WPARAM)uBand, (LPARAM)fIdeal); - } - - inline void CReBar::MinimizeBand(UINT uBand) - // Resizes a band in a rebar control to its smallest size. - { - assert(::IsWindow(m_hWnd)); - SendMessage(RB_MINIMIZEBAND, (WPARAM)uBand, 0L); - } - - inline BOOL CReBar::MoveBand(UINT uFrom, UINT uTo) - // Moves a band from one index to another. - { - assert(::IsWindow(m_hWnd)); - return (BOOL)SendMessage(RB_MOVEBAND, (WPARAM)uFrom, (LPARAM)uTo); - } - - inline void CReBar::MoveBandsLeft() - // Repositions the bands so they are left justified - { - assert(::IsWindow(m_hWnd)); - - int OldrcTop = -1; - for (int nBand = GetBandCount() -1; nBand >= 0; --nBand) - { - CRect rc = GetBandRect(nBand); - if (rc.top != OldrcTop) - { - // Maximize the last band on each row - if (IsBandVisible(nBand)) - { - ::SendMessage(GetHwnd(), RB_MAXIMIZEBAND, nBand, 0L); - OldrcTop = rc.top; - } - } - } - } - - inline BOOL CReBar::ResizeBand(int nBand, const CSize& sz) const - // Sets a band's size - { - assert(::IsWindow(m_hWnd)); - - REBARBANDINFO rbbi = {0}; - rbbi.cbSize = GetSizeofRBBI(); - rbbi.fMask = RBBIM_CHILDSIZE | RBBIM_SIZE; - - GetBandInfo(nBand, rbbi); - rbbi.cx = sz.cx + 2; - rbbi.cxMinChild = sz.cx + 2; - rbbi.cyMinChild = sz.cy; - rbbi.cyMaxChild = sz.cy; - - return SetBandInfo(nBand, rbbi ); - } - - inline BOOL CReBar::SetBandBitmap(int nBand, const CBitmap* pBackground) const - // Sets the band's bitmaps - { - assert(::IsWindow(m_hWnd)); - assert(pBackground); - - REBARBANDINFO rbbi = {0}; - rbbi.cbSize = GetSizeofRBBI(); - rbbi.fMask = RBBIM_STYLE; - GetBandInfo(nBand, rbbi); - rbbi.fMask |= RBBIM_BACKGROUND; - rbbi.hbmBack = *pBackground; - - return (BOOL)SendMessage(RB_SETBANDINFO, nBand, (LPARAM)&rbbi); - } - - inline BOOL CReBar::SetBandColor(int nBand, COLORREF clrFore, COLORREF clrBack) const - // Sets the band's color - // Note: No effect with XP themes enabled - // No effect if a bitmap has been set - { - assert(::IsWindow(m_hWnd)); - - REBARBANDINFO rbbi = {0}; - rbbi.cbSize = GetSizeofRBBI(); - rbbi.fMask = RBBIM_COLORS; - rbbi.clrFore = clrFore; - rbbi.clrBack = clrBack; - - return (BOOL)SendMessage(RB_SETBANDINFO, nBand, (LPARAM)&rbbi); - } - - inline BOOL CReBar::SetBandInfo(int nBand, REBARBANDINFO& rbbi) const - // Sets the characteristics of a rebar control. - { - assert(::IsWindow(m_hWnd)); - assert(nBand >= 0); - - // REBARBANDINFO describes individual BAND characteristics0 - rbbi.cbSize = GetSizeofRBBI(); - return (BOOL)SendMessage(RB_SETBANDINFO, nBand, (LPARAM)&rbbi); - } - - inline BOOL CReBar::SetBarInfo(REBARINFO& rbi) const - // REBARINFO associates an image list with the rebar - // A band will also need to set RBBIM_IMAGE - { - assert(::IsWindow(m_hWnd)); - - rbi.cbSize = GetSizeofRBBI(); - return (BOOL)SendMessage(RB_SETBARINFO, 0L, (LPARAM)&rbi); - } - - inline void CReBar::SetReBarTheme(ReBarTheme& Theme) - { - m_Theme.UseThemes = Theme.UseThemes; - m_Theme.clrBkgnd1 = Theme.clrBkgnd1; - m_Theme.clrBkgnd2 = Theme.clrBkgnd2; - m_Theme.clrBand1 = Theme.clrBand1; - m_Theme.clrBand2 = Theme.clrBand2; - m_Theme.BandsLeft = Theme.BandsLeft; - m_Theme.LockMenuBand = Theme.LockMenuBand; - m_Theme.ShortBands = Theme.ShortBands; - m_Theme.UseLines = Theme.UseLines; - m_Theme.FlatStyle = Theme.FlatStyle; - m_Theme.RoundBorders = Theme.RoundBorders; - - if (IsWindow()) - { - if (m_Theme.LockMenuBand) - ShowGripper(GetBand(m_hMenuBar), FALSE); - else - ShowGripper(GetBand(m_hMenuBar), TRUE); - - Invalidate(); - } - } - - inline BOOL CReBar::ShowBand(int nBand, BOOL fShow) const - // Show or hide a band - { - assert(::IsWindow(m_hWnd)); - return (BOOL)SendMessage(RB_SHOWBAND, (WPARAM)nBand, (LPARAM)fShow); - } - - inline BOOL CReBar::ShowGripper(int nBand, BOOL fShow) const - // Show or hide the band's gripper - { - assert(::IsWindow(m_hWnd)); - - REBARBANDINFO rbbi = {0}; - rbbi.cbSize = GetSizeofRBBI(); - rbbi.fMask = RBBIM_STYLE; - GetBandInfo(nBand, rbbi); - if (fShow) - { - rbbi.fStyle |= RBBS_GRIPPERALWAYS; - rbbi.fStyle &= ~RBBS_NOGRIPPER; - } - else - { - rbbi.fStyle &= ~RBBS_GRIPPERALWAYS; - rbbi.fStyle |= RBBS_NOGRIPPER; - } - - return SetBandInfo(nBand, rbbi); - } - - inline BOOL CReBar::SizeToRect(CRect& rect) const - // Attempts to find the best layout of the bands for the given rectangle. - // The rebar bands will be arranged and wrapped as necessary to fit the rectangle. - { - assert(::IsWindow(m_hWnd)); - return (BOOL)SendMessage(RB_SIZETORECT, 0, (LPARAM) (LPRECT)rect); - } - - inline LRESULT CReBar::WndProcDefault(UINT uMsg, WPARAM wParam, LPARAM lParam) - { - switch (uMsg) - { - case WM_MOUSEMOVE: - if (m_Theme.UseThemes && m_Theme.LockMenuBand) - { - // We want to lock the first row in place, but allow other bands to move! - // Use move messages to limit the resizing of bands - int y = GET_Y_LPARAM(lParam); - - if (y <= GetRowHeight(0)) - return 0L; // throw this message away - } - break; - case WM_LBUTTONDOWN: - m_Orig_lParam = lParam; // Store the x,y position - m_bIsDragging = TRUE; - break; - case WM_LBUTTONUP: - if (m_Theme.UseThemes && m_Theme.LockMenuBand) - { - // Use move messages to limit the resizing of bands - int y = GET_Y_LPARAM(lParam); - - if (y <= GetRowHeight(0)) - { - // Use x,y from WM_LBUTTONDOWN for WM_LBUTTONUP position - lParam = m_Orig_lParam; - } - } - m_bIsDragging = FALSE; - break; - case UWM_GETREBARTHEME: - { - ReBarTheme& rm = GetReBarTheme(); - return (LRESULT)&rm; - } - case UWM_TOOLBAR_RESIZE: - { - HWND hToolBar = (HWND)wParam; - LPSIZE pToolBarSize = (LPSIZE)lParam; - ResizeBand(GetBand(hToolBar), *pToolBarSize); - } - break; - } - - // pass unhandled messages on for default processing - return CWnd::WndProcDefault(uMsg, wParam, lParam); - } - -} // namespace Win32xx - -#endif // #ifndef _WIN32XX_REBAR_H_ |