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

📄 cbcgtoolbarcustomizepages.cpp

📁 一个完整的编辑器的代码(很值得参考
💻 CPP
📖 第 1 页 / 共 2 页
字号:
	{
		m_pSelectedToolbar = NULL;
		m_btnReset.EnableWindow (FALSE);
		m_btnDelete.EnableWindow (FALSE);
		m_bntRenameToolbar.EnableWindow (FALSE);
		m_wndTextLabels.EnableWindow (FALSE);
		return;
	}

	m_pSelectedToolbar = (CBCGToolBar*) m_wndToobarList.GetItemData (iIndex);
	ASSERT_VALID(m_pSelectedToolbar);

	m_btnReset.EnableWindow (m_pSelectedToolbar->CanBeRestored ());
	m_btnDelete.EnableWindow (IsUserDefinedToolBar (m_pSelectedToolbar));
	m_bntRenameToolbar.EnableWindow (IsUserDefinedToolBar (m_pSelectedToolbar));
	m_wndTextLabels.EnableWindow (m_pSelectedToolbar->AllowChangeTextLabels ());

	m_bTextLabels = m_pSelectedToolbar->AreTextLabels ();
	UpdateData (FALSE);
}
//*************************************************************************************
void CBCGToolbarsPage::OnDblclkToolbarList() 
{
	int iIndex = m_wndToobarList.GetCurSel ();
	if (iIndex != LB_ERR)
	{
		m_pSelectedToolbar = (CBCGToolBar*) m_wndToobarList.GetItemData (iIndex);
		ASSERT_VALID(m_pSelectedToolbar);

		if (m_pSelectedToolbar->CanBeClosed ())
		{
			m_wndToobarList.SetCheck (iIndex, !m_wndToobarList.GetCheck (iIndex));
		}
		else
		{
			MessageBeep ((UINT) -1);
		}
	}

	OnSelchangeToolbarList ();
}
//*************************************************************************************
void CBCGToolbarsPage::ShowToolBar (CBCGToolBar* pToolBar, BOOL bShow)
{
	if (m_wndToobarList.GetSafeHwnd () == NULL)
	{
		return;
	}

	for (int i = 0; i < m_wndToobarList.GetCount (); i ++)
	{
		CBCGToolBar* pListToolBar = (CBCGToolBar*) m_wndToobarList.GetItemData (i);
		ASSERT_VALID(pListToolBar);

		if (pListToolBar == pToolBar)
		{
			m_wndToobarList.SetCheck (i, bShow);
			break;
		}
	}
}
//**************************************************************************************
void CBCGToolbarsPage::OnReset() 
{
	ASSERT (m_pSelectedToolbar != NULL);
	ASSERT (m_pSelectedToolbar->CanBeRestored ());

	{
		CBCGLocalResource locaRes;

		CString strName;
		m_pSelectedToolbar->GetWindowText (strName);

		CString strPrompt;
		strPrompt.Format (IDS_BCGBARRES_RESET_TOOLBAR_FMT, strName);

		if (MessageBox (strPrompt, NULL, MB_YESNO | MB_ICONQUESTION) != IDYES)
		{
			return;
		}
	}

	m_pSelectedToolbar->RestoreOriginalstate ();
}
//**************************************************************************************
void CBCGToolbarsPage::OnResetAll() 
{
	{
		CBCGLocalResource locaRes;
		if (AfxMessageBox (IDS_BCGBARRES_RESET_ALL_TOOLBARS, MB_YESNO | MB_ICONQUESTION) != IDYES)
		{
			return;
		}
	}

	CMD_MGR.ClearAllCmdImages ();

	//------------------------------------------
	// Fill image hash by the default image ids:
	//------------------------------------------
	for (POSITION pos = CBCGToolBar::m_DefaultImages.GetStartPosition (); pos != NULL;)
	{
		UINT uiCmdId;
		int iImage;

		CBCGToolBar::m_DefaultImages.GetNextAssoc (pos, uiCmdId, iImage);
		CMD_MGR.SetCmdImage (uiCmdId, iImage, FALSE);
	}

	for (int i = 0; i < m_wndToobarList.GetCount (); i ++)
	{
		CBCGToolBar* pListToolBar = (CBCGToolBar*) m_wndToobarList.GetItemData (i);
		ASSERT_VALID(pListToolBar);

		if (pListToolBar->CanBeRestored ())
		{
			pListToolBar->RestoreOriginalstate ();
		}
	}
}
//**********************************************************************************
void CBCGToolbarsPage::OnDeleteToolbar() 
{
	ASSERT (m_pSelectedToolbar != NULL);
	ASSERT (IsUserDefinedToolBar (m_pSelectedToolbar));

	CFrameWnd* pParentFrame = GetParentFrame ();
	if (pParentFrame == NULL)
	{
		MessageBeep (MB_ICONASTERISK);
		return;
	}

	{
		CBCGLocalResource locaRes;

		CString strName;
		m_pSelectedToolbar->GetWindowText (strName);

		CString strPrompt;
		strPrompt.Format (IDS_BCGBARRES_DELETE_TOOLBAR_FMT, strName);

		if (MessageBox (strPrompt, NULL, MB_YESNO | MB_ICONQUESTION) != IDYES)
		{
			return;
		}
	}

	if (pParentFrame->SendMessage (BCGM_DELETETOOLBAR, 0, (LPARAM) m_pSelectedToolbar)
		== 0)
	{
		MessageBeep (MB_ICONASTERISK);
		return;
	}

	m_wndToobarList.DeleteString (m_wndToobarList.GetCurSel ());
	m_wndToobarList.SetCurSel (0);
	OnSelchangeToolbarList ();
}
//**********************************************************************************
void CBCGToolbarsPage::OnNewToolbar()
{
	CString strToolbarName;
	{
		CBCGLocalResource locaRes;

		CToolbarNameDlg dlg (this);
		if (dlg.DoModal () != IDOK)
		{
			return;
		}

		strToolbarName = dlg.m_strToolbarName;
	}

	CFrameWnd* pParentFrame = GetParentFrame ();
	if (pParentFrame == NULL)
	{
		MessageBeep (MB_ICONASTERISK);
		return;
	}

	CBCGToolBar* pNewToolbar = 
		(CBCGToolBar*)pParentFrame->SendMessage (BCGM_CREATETOOLBAR, 0,
			(LPARAM) (LPCTSTR) strToolbarName);
	if (pNewToolbar == NULL)
	{
		return;
	}

	ASSERT_VALID (pNewToolbar);

	int iIndex = m_wndToobarList.AddString (strToolbarName);
	m_wndToobarList.SetItemData (iIndex, (DWORD) pNewToolbar);

	m_wndToobarList.SetCheck (iIndex, 1);
	m_wndToobarList.SetCurSel (iIndex);
	m_wndToobarList.SetTopIndex (iIndex);

	OnSelchangeToolbarList ();
}
//**********************************************************************************
void CBCGToolbarsPage::OnRenameToolbar() 
{
	ASSERT (m_pSelectedToolbar != NULL);
	ASSERT (IsUserDefinedToolBar (m_pSelectedToolbar));

	CString strToolbarName;
	{
		CBCGLocalResource locaRes;

		CToolbarNameDlg dlg (this);
		m_pSelectedToolbar->GetWindowText (dlg.m_strToolbarName);

		if (dlg.DoModal () != IDOK)
		{
			return;
		}

		strToolbarName = dlg.m_strToolbarName;
	}

	m_pSelectedToolbar->SetWindowText (strToolbarName);
	if (m_pSelectedToolbar->IsFloating ())
	{
		//-----------------------------
		// Change floating frame title:
		//-----------------------------
		CFrameWnd* pParent = m_pSelectedToolbar->GetParentFrame();

		CMiniDockFrameWnd* pDockFrame =
			DYNAMIC_DOWNCAST (CMiniDockFrameWnd, pParent);
		if (pDockFrame != NULL)
		{
			pDockFrame->SetWindowText (strToolbarName);
		}
	}

	m_wndToobarList.DeleteString (m_wndToobarList.GetCurSel ());

	int iIndex = m_wndToobarList.AddString (strToolbarName);
	m_wndToobarList.SetItemData (iIndex, (DWORD) m_pSelectedToolbar);

	if (m_pSelectedToolbar->GetStyle () & WS_VISIBLE)
	{
		m_wndToobarList.SetCheck (iIndex, 1);
	}

	m_wndToobarList.SetCurSel (iIndex);
	m_wndToobarList.SetTopIndex (iIndex);

	OnSelchangeToolbarList ();
}
//*************************************************************************************
BOOL CBCGToolbarsPage::IsUserDefinedToolBar (const CBCGToolBar* pToolBar) const
{
	ASSERT_VALID (m_pParentFrame);

	CBCGMDIFrameWnd* pMainMDIFrame = DYNAMIC_DOWNCAST (CBCGMDIFrameWnd, m_pParentFrame);
	if (pMainMDIFrame != NULL)
	{
		return pMainMDIFrame->m_Impl.IsUserDefinedToolbar (pToolBar);
	}

	CBCGFrameWnd* pMainFrame = DYNAMIC_DOWNCAST (CBCGFrameWnd, m_pParentFrame);
	if (pMainFrame != NULL)
	{
		return pMainFrame->m_Impl.IsUserDefinedToolbar (pToolBar);
	}

	return FALSE;
}
//******************************************************************************
BOOL CBCGToolbarsPage::OnCommand(WPARAM wParam, LPARAM lParam) 
{
	UINT uiCode = HIWORD (wParam);
	UINT uiID = LOWORD (wParam);

	if (uiCode == CLBN_CHKCHANGE && uiID == IDC_BCGBARRES_TOOLBAR_LIST)
	{
		int iIndex = m_wndToobarList.GetCurSel ();
		if (iIndex != LB_ERR)
		{
			CBCGToolBar* pToolbar = (CBCGToolBar*) m_wndToobarList.GetItemData (iIndex);
			ASSERT_VALID (pToolbar);

			CFrameWnd* pParentFrame = (pToolbar->m_pDockSite == NULL) ?
				pToolbar->GetDockingFrame() : pToolbar->m_pDockSite;
			ASSERT_VALID(pParentFrame);

			if (pToolbar->CanBeClosed ())
			{
				//-------------------
				// Show/hide toolbar:
				//-------------------
				pParentFrame->ShowControlBar (pToolbar,
					m_wndToobarList.GetCheck (iIndex), FALSE);
			}
			else if (m_wndToobarList.GetCheck (iIndex) == 0)
			{
				//----------------------------------
				// Toolbar should be visible always!
				//----------------------------------
				m_wndToobarList.SetCheck (iIndex, TRUE);
				MessageBeep ((UINT) -1);
			}
		}
	}
	
	return CPropertyPage::OnCommand(wParam, lParam);
}
//***********************************************************************************
void CBCGToolbarsPage::OnBcgbarresTextLabels() 
{
	UpdateData ();

	ASSERT_VALID (m_pSelectedToolbar);
	m_pSelectedToolbar->EnableTextLabels (m_bTextLabels);
}

⌨️ 快捷键说明

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