⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 atldock2.h

📁 BCAM 1394 Driver
💻 H
字号:
#ifndef __ATL_DOCK2_H__
#define __ATL_DOCK2_H__
//
// These classes are extensions to the atldock.h classes.
// They provide a different look and some helper classes
// but are not essential to compiling the docking framework.
//
// They are based on suggestions and improvements from 
// Jens Nilsson <jnilsson@icebreaker.com>.
//
// Also included is a persistance class for the panel sizes.
//

#pragma once

#ifndef __ATL_DOCK_H__
   #error atldock2.h requires atldock.h to be included first
#endif


///////////////////////////////////////////////////////
// Flat looking Docking Framework

class CFlatDockingPaneChildWindow : public CDockingPaneChildWindowImpl<CFlatDockingPaneChildWindow>
{
public:
   DECLARE_WND_CLASS_EX(_T("WTL_FlatDockingChildWindow"), CS_HREDRAW|CS_VREDRAW|CS_DBLCLKS, NULL)

   CFlatDockingPaneChildWindow(DOCKCONTEXT *ctx) : 
      CDockingPaneChildWindowImpl<CFlatDockingPaneChildWindow>(ctx) 
   { 
   }

   void DrawGripperBar(CDCHandle dc, short Side, RECT &rcBar, RECT &rcCloseButton, bool bCloseDown)
   {
      if( ::IsRectEmpty(&rcBar) ) return;
      const int INSET = 5;
      const int Y = 7;
      const int CY = 3;
      bool bVertical = IsDockedVertically(Side);
      RECT rcLine;
      if( bVertical ) {
         ::SetRect(&rcLine, rcBar.left+INSET, rcBar.top+Y, rcBar.right-INSET, rcBar.top+Y+CY);
      }
      else {
         ::SetRect(&rcLine, rcBar.left+Y, rcBar.top+INSET, rcBar.left+Y+CY, rcBar.bottom-INSET);
      }
      dc.Draw3dRect(&rcLine, ::GetSysColor(COLOR_BTNHIGHLIGHT), ::GetSysColor(COLOR_BTNSHADOW));
      if( !::IsRectEmpty(&rcCloseButton) ) {
         dc.DrawFrameControl(&rcCloseButton, DFC_CAPTION, bCloseDown ? DFCS_CAPTIONCLOSE|DFCS_PUSHED : DFCS_CAPTIONCLOSE);
      }
   }

   void DrawPaneFrame(CDCHandle dc, short Side, RECT &rc)
   {      
      bool bVertical = IsDockedVertically(Side);
      // Left highlight
      if( Side!=DOCK_LEFT ) dc.FillSolidRect(rc.left, rc.top, 1, rc.bottom - rc.top, ::GetSysColor(COLOR_3DHILIGHT));
      // Right shadow
      if( Side!=DOCK_RIGHT ) dc.FillSolidRect(rc.right - 1 - (bVertical ? 0 : m_cxySplitter), rc.top, 1, rc.bottom - rc.top, ::GetSysColor(COLOR_3DSHADOW));
      // Top highlight
      dc.FillSolidRect(rc.left, rc.top, rc.right - rc.left - 1, 1, ::GetSysColor(COLOR_3DHILIGHT));
      // Bottom shadow
      dc.FillSolidRect(rc.left, rc.bottom - 1 - (bVertical ? m_cxySplitter : 0), rc.right - rc.left, 1, ::GetSysColor(COLOR_3DSHADOW));
   }

   void DrawSplitterBar(CDCHandle dc, bool bVertical, RECT &rc)
   {      
      // Splitter bar
      if( m_cxySplitter>0 ) {
         if( bVertical) {
            dc.FillSolidRect(rc.left, rc.bottom - m_cxySplitter, rc.right - rc.left - 1, 1, ::GetSysColor(COLOR_3DHILIGHT));
            dc.FillSolidRect(rc.left, rc.bottom - 1, rc.right - rc.left, 1, ::GetSysColor(COLOR_3DSHADOW));
         }
         else {
            dc.FillSolidRect(rc.right - m_cxySplitter, rc.top , 1, rc.bottom - rc.top - 1, ::GetSysColor(COLOR_3DHILIGHT));
            dc.FillSolidRect(rc.right - 1, rc.top, 1, rc.bottom - rc.top, ::GetSysColor(COLOR_3DSHADOW));
         }
      }
   }
};

class CFlatDockingPaneWindow : public CDockingPaneWindowImpl<CFlatDockingPaneWindow>
{
public:
   DECLARE_WND_CLASS_EX(_T("WTL_FlatDockingPaneWindow"), CS_HREDRAW|CS_VREDRAW|CS_DBLCLKS, COLOR_WINDOW)

   void DrawSplitterBar(CDCHandle dc, bool /*bVertical*/, RECT &rc)
   {      
      if( ::IsRectEmpty(&rc) ) return;

      RECT rect = rc;
      if( m_Side==DOCK_LEFT ) {
         rect.left += 1;
         rect.right -= 1;
         dc.FillSolidRect(rc.left, rc.top, 1, rc.bottom - rc.top, ::GetSysColor(COLOR_3DHILIGHT));
         dc.FillSolidRect(rc.right-1, rc.top, 1, rc.bottom - rc.top, ::GetSysColor(COLOR_3DSHADOW));
      }
      if( m_Side==DOCK_RIGHT ) {
         rect.left += 1;
         rect.right -= 1;
         dc.FillSolidRect(rc.right - 1, rc.top, 1, rc.bottom - rc.top, ::GetSysColor(COLOR_3DSHADOW));
         dc.FillSolidRect(rc.left, rc.top, 1, rc.bottom - rc.top, ::GetSysColor(COLOR_3DHILIGHT));
      }
      if( m_Side==DOCK_TOP ) {
         rect.bottom -= 1;
         rect.top += 1;
         dc.FillSolidRect(rc.left, rc.top, rc.right - rc.left, 1, ::GetSysColor(COLOR_3DHILIGHT));
         dc.FillSolidRect(rc.left, rc.bottom - 1, rc.right - rc.left, 1, ::GetSysColor(COLOR_3DSHADOW));
      }
      if( m_Side==DOCK_BOTTOM ) {
         rect.top += 1;
         rect.bottom -= 1;
         dc.FillSolidRect(rc.left, rc.bottom - 1, rc.right - rc.left, 1, ::GetSysColor(COLOR_3DSHADOW));
         dc.FillSolidRect(rc.left, rc.top, rc.right - rc.left, 1, ::GetSysColor(COLOR_3DHILIGHT));
      }
      dc.FillRect( &rect, (HBRUSH)LongToPtr(COLOR_3DFACE + 1) );
   }
};

class CFlatDockingWindow : 
   public CDockingWindowImpl<CFlatDockingWindow, CFlatDockingPaneWindow, CFlatDockingPaneChildWindow>
{
public:
   DECLARE_WND_CLASS_EX(_T("WTL_FlatDockingWindow"), CS_HREDRAW|CS_VREDRAW|CS_DBLCLKS, NULL)
};


#endif // __ATL_DOCK2_H__

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -