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

📄 worksbar.cpp

📁 一个完整的编辑器的代码(很值得参考
💻 CPP
字号:

#include "stdafx.h"
#include "resource.h"
#include "editcmd.h"
#include "worksbar.h"
#include "wm.h"

#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif

#pragma warning ( disable : 4711 )
/////////////////////////////////////////////////////////////////////////////
// CWorkspaceBar

CWorkspaceBar::CWorkspaceBar () : CAppBar (), m_pwndExplorer (NULL), m_pwndProject (NULL)
{
}

CWorkspaceBar::~CWorkspaceBar ()
  {
    if (m_pwndExplorer)
      delete m_pwndExplorer;
    if (m_pwndProject)
      delete m_pwndProject;
  }

BEGIN_MESSAGE_MAP (CWorkspaceBar, CAppBar)
//{{AFX_MSG_MAP( CWorkspaceBar )
ON_WM_CREATE ()
ON_MESSAGE (WM_APPEND_MENU, OnAppendMenu)
ON_MESSAGE (WM_PROCESS_MENU, OnProcessMenu)
ON_MESSAGE (WM_APPEND_PROPS, OnAppendProps)
//}}AFX_MSG_MAP
END_MESSAGE_MAP ()

bool CWorkspaceBar::IsExplorer ()
  {
    return m_pwndExplorer && m_pwndExplorer->GetSafeHwnd ();
  }

bool CWorkspaceBar::CreateExplorer ()
{
  m_pwndExplorer = new CExplorePlug;
  CRect rect (0, 0, 220, 400);
  if (!m_pwndExplorer->Create (WS_CHILD|WS_VISIBLE|TVS_HASLINES|TVS_HASBUTTONS|TVS_SHOWSELALWAYS, rect, &m_wndTabCtrl, 1))
    {
      TRACE (_T("Failed to create CExplorePlug\n"));
      return false;
    }
  m_pwndExplorer->SendMessage (SHLT_MODIFYPATTERN, 0, (LPARAM) _T ("*.*"));
  m_pwndExplorer->SendMessage (SHLT_MODIFYFLAGS, 0, SHLT_FILES|SHLT_REFRESHONEXPAND);
  m_pwndExplorer->ModifyStyleEx (0, WS_EX_CLIENTEDGE);
  m_wndTabCtrl.AddTabItem (0, _T ("Explorer"), m_pwndExplorer->GetSafeHwnd ());
  m_wndTabCtrl.GetTabItemOffsets (rect);
  m_wndTabCtrl.AddChild (m_pwndExplorer->GetSafeHwnd (), ORD_SET_BEGIN|ORD_SET_BACK_END, rect, NULL);
  m_wndTabCtrl.ShowSelTabWnd ();
  return true;
}

void CWorkspaceBar::DestroyExplorer ()
{
  ASSERT (m_pwndExplorer->GetSafeHwnd ());
  m_wndTabCtrl.RemoveChild (m_pwndExplorer->GetSafeHwnd ());
  m_wndTabCtrl.RemoveTabItem (m_pwndExplorer);
  m_pwndExplorer->DestroyWindow ();
  delete m_pwndExplorer;
  m_pwndExplorer = NULL;
}

bool CWorkspaceBar::ToggleExplorer ()
  {
    if (IsExplorer ())
      DestroyExplorer ();
    else
      return CreateExplorer ();
    return true;
  }

bool CWorkspaceBar::IsProject ()
  {
    return m_pwndProject && m_pwndProject->GetSafeHwnd ();
  }

bool CWorkspaceBar::CreateProject ()
{
  m_pwndProject = new CProjectTreeCtrl;
  CRect rect (0, 0, 220, 400);
  if (!m_pwndProject->Create (WS_CHILD|WS_VISIBLE|TVS_HASLINES|TVS_HASBUTTONS|TVS_SHOWSELALWAYS|TVS_EDITLABELS, rect, &m_wndTabCtrl, 1))
    {
      TRACE (_T("Failed to create CProjectTreeCtrl\n"));
      return false;
    }
  m_pwndProject->ModifyStyleEx (0, WS_EX_CLIENTEDGE);
  m_wndTabCtrl.AddTabItem (0, _T ("Project"), m_pwndProject->GetSafeHwnd ());
  m_wndTabCtrl.GetTabItemOffsets (rect);
  m_wndTabCtrl.AddChild (m_pwndProject->GetSafeHwnd (), ORD_SET_BEGIN|ORD_SET_BACK_END, rect, NULL);
  m_wndTabCtrl.ShowSelTabWnd ();
  return true;
}

void CWorkspaceBar::DestroyProject ()
{
  ASSERT (m_pwndProject->GetSafeHwnd ());
  m_wndTabCtrl.RemoveChild (m_pwndProject->GetSafeHwnd ());
  m_wndTabCtrl.RemoveTabItem (m_pwndProject);
  m_pwndProject->DestroyWindow ();
  delete m_pwndProject;
  m_pwndProject = NULL;
}

bool CWorkspaceBar::ToggleProject ()
  {
    if (IsProject ())
      DestroyProject ();
    else
      return CreateProject ();
    return true;
  }

void CWorkspaceBar::EmptyProject ()
{
  if (!IsProject ())
    return;
  m_pwndProject->PopulateEmpty ();
}

void CWorkspaceBar::PopulateProject ()
{
  if (!IsProject ())
    return;
  m_pwndProject->Populate ();
}


/////////////////////////////////////////////////////////////////////////////
// CWorkspaceBar message handlers

int CWorkspaceBar::OnCreate (LPCREATESTRUCT lpCreateStruct)
{
  if (CAppBar::OnCreate (lpCreateStruct) == -1)
    return -1;
  CRect rect (0, 0, 220, 400);
  if (!m_wndTabCtrl.Create (WS_CHILD|WS_VISIBLE|TCS_OWNERDRAWFIXED|TCS_BOTTOM|TCS_TOOLTIPS, rect, this, 1))
    {
      TRACE (_T("Failed to create CAppTabCtrl\n"));
      return -1;
    }
  AddChild (m_wndTabCtrl.GetSafeHwnd (), ORD_FULL_END, CRect(0, 0, 0, 0), NULL);
  CreateExplorer ();
  CreateProject ();
  return 0;
}

CString CWorkspaceBar::
GetName ()
{
  return _T ("Workspace");
}

/////////////////////////////////////////////////////////////////////////////
#pragma warning ( default : 4711 )

⌨️ 快捷键说明

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