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

📄 dynhelpviewbar.cpp

📁 这是书上的代码
💻 CPP
字号:
// DynHelpViewBar.cpp: implementation of the CDynHelpViewBar class.

#include "stdafx.h"
#include "TestLib.h"
#include "DynHelpViewBar.h"
#include "MainFrm.h"
#ifdef _DEBUG
#undef THIS_FILE
static char THIS_FILE[]=__FILE__;
#define new DEBUG_NEW
#endif

const int	idTree = 1;
static const int dwDefaultToolbarStyle = (	WS_CHILD|WS_VISIBLE|
											CBRS_TOP|CBRS_GRIPPER|
											CBRS_HIDE_INPLACE);

//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////

CDynHelpViewBar::CDynHelpViewBar()
{
}

CDynHelpViewBar::~CDynHelpViewBar()
{
	if(m_wndToolBar.GetSafeHwnd())
		m_wndToolBar.DestroyWindow();

	if(m_wndArticles.GetSafeHwnd())
		m_wndArticles.DestroyWindow();
}

BEGIN_MESSAGE_MAP(CDynHelpViewBar, CCJControlBar)
	//{{AFX_MSG_MAP(CDynHelpViewBar)
	ON_WM_CREATE()
	ON_WM_SIZE()
	ON_WM_LBUTTONDOWN()
	ON_COMMAND(ID_DHELP1, OnDhelp1)
	ON_UPDATE_COMMAND_UI(ID_DHELP1, OnUpdateDhelp1)
	ON_COMMAND(ID_DHELP2, OnDhelp2)
	ON_UPDATE_COMMAND_UI(ID_DHELP2, OnUpdateDhelp2)
	ON_COMMAND(ID_DHELP3, OnDhelp3)
	ON_UPDATE_COMMAND_UI(ID_DHELP3, OnUpdateDhelp3)
	ON_WM_PAINT()
	//}}AFX_MSG_MAP
	ON_NOTIFY(TVN_SELCHANGED, idTree, OnSelectTree)
END_MESSAGE_MAP()
//WM_COMMAND

/////////////////////////////////////////////////////////////////////////////
// CDynamicHelpView message handlers

int CDynHelpViewBar::OnCreate(LPCREATESTRUCT lpCreateStruct) 
{
	if (CCJControlBar::OnCreate(lpCreateStruct) == -1)
		return -1;

	
	SetWindowText (_T("系统帮助"));

	CRect rectDummy(0, 0, 0, 0);
	m_wndArticles.Create (WS_CHILD | WS_VISIBLE | WS_CLIPSIBLINGS | WS_CLIPCHILDREN |TVS_TRACKSELECT |
		TVS_NOTOOLTIPS | TVS_SINGLEEXPAND, rectDummy,
		this, idTree);

	m_DynamicHelpImages.Create (IDB_DYNAMICHELP, 16, 0, RGB (255, 0, 0));
	m_wndArticles.SetImageList (&m_DynamicHelpImages, TVSIL_NORMAL);

	m_wndToolBar.Create (this, dwDefaultToolbarStyle, IDR_DYNAMIC_HELP);
	m_wndToolBar.LoadToolBar(IDR_DYNAMIC_HELP);
	
	m_wndToolBar.SetBarStyle(m_wndToolBar.GetBarStyle() |
		CBRS_TOOLTIPS | CBRS_FLYBY);
	
	m_wndToolBar.SetBarStyle (
		m_wndToolBar.GetBarStyle () & 
		~(CBRS_GRIPPER | CBRS_SIZE_DYNAMIC | CBRS_BORDER_TOP | CBRS_BORDER_BOTTOM | CBRS_BORDER_LEFT | CBRS_BORDER_RIGHT));
	
	m_wndToolBar.SetOwner (this);
	ShowFrameControls(FALSE,FALSE);
	
	FillHelp ();
	AdjustLayout ();
	return 0;
}

void CDynHelpViewBar::OnSize(UINT nType, int cx, int cy) 
{
	CCJControlBar::OnSize(nType, cx, cy);
	AdjustLayout();
}

void CDynHelpViewBar::OnEraseWorkArea (CDC* /*pDC*/, CRect /*rectWorkArea*/)
{
}

void CDynHelpViewBar::OnSelectTree(NMHDR* pNMHDR, LRESULT* pResult) 
{
//	NM_TREEVIEW* pNMTreeView = (NM_TREEVIEW*)pNMHDR;

	HTREEITEM hTreeItem = m_wndArticles.GetSelectedItem ();
	if (hTreeItem != NULL)
	{
	}
	
	*pResult = 0;
}

void CDynHelpViewBar::FillHelp ()
{
	HTREEITEM hTreeItem = m_wndArticles.InsertItem (_T("Samples"),0, 2, NULL);
	m_wndArticles.SetItemData (hTreeItem, (DWORD) 1);

	hTreeItem = m_wndArticles.InsertItem (_T("Visual Studio Sample"), 5, 5, hTreeItem);
	m_wndArticles.SetItemData (hTreeItem, (DWORD) 2);

	hTreeItem = m_wndArticles.InsertItem (_T("Getting Started"), 1, 3, NULL);
	m_wndArticles.SetItemData (hTreeItem, (DWORD) 1);

	hTreeItem = m_wndArticles.InsertItem (_T("Customizing Dynamic Help"), 
		5, 5, hTreeItem);
	m_wndArticles.SetItemData (hTreeItem, (DWORD) 2);
}

void CDynHelpViewBar::AdjustLayout ()
{
	if (GetSafeHwnd () == NULL)
		return;

	CRect rectClient;
	CSize size;
	GetClientRect (rectClient);
	size = m_wndToolBar.CalcFixedLayout(FALSE,TRUE);
	int cyTlb = size.cy;
	m_rectToolBar.left=rectClient.left;
	m_rectToolBar.top=rectClient.top;
	m_rectToolBar.right=rectClient.Width();
	m_rectToolBar.bottom=cyTlb;
	
	m_wndToolBar.SetWindowPos (NULL, m_rectToolBar.left, m_rectToolBar.top, 
									 m_rectToolBar.right, m_rectToolBar.bottom,
								SWP_NOACTIVATE | SWP_NOZORDER|SWP_FRAMECHANGED);

	m_rectTree.left=rectClient.left + 1;
	m_rectTree.top=rectClient.top + cyTlb + 1;
	m_rectTree.right=rectClient.Width () - 2;
	m_rectTree.bottom=rectClient.Height () - cyTlb - 2;

	m_wndArticles.SetWindowPos(NULL, m_rectTree.left, m_rectTree.top,
								     m_rectTree.right,m_rectTree.bottom,
								SWP_NOACTIVATE | SWP_NOZORDER);
}

void CDynHelpViewBar::OnDhelp1() 
{
	AfxMessageBox("帮助按钮1");
}

void CDynHelpViewBar::OnUpdateDhelp1(CCmdUI* pCmdUI) 
{
}

void CDynHelpViewBar::OnDhelp2() 
{
}

void CDynHelpViewBar::OnUpdateDhelp2(CCmdUI* pCmdUI) 
{
}

void CDynHelpViewBar::OnDhelp3() 
{
}

void CDynHelpViewBar::OnUpdateDhelp3(CCmdUI* pCmdUI) 
{
}

void CDynHelpViewBar::OnPaint() 
{
	CPaintDC dc(this); // device context for painting
	m_wndArticles.GetWindowRect(&m_rectTree);
	ScreenToClient(&m_rectTree);
	m_rectTree.InflateRect (1, 1);
	dc.Draw3dRect(&m_rectTree, ::GetSysColor (COLOR_3DSHADOW), ::GetSysColor (COLOR_3DSHADOW));
//	m_wndToolBar.GetWindowRect(&m_rectToolBar);
//	ScreenToClient(&m_rectToolBar);
//	m_rectToolBar.InflateRect(20,20);
//	dc.FillSolidRect(&m_rectToolBar,RGB(255,0,0)); //RGB(212,208,200));
}

void CDynHelpViewBar::OnLButtonDown(UINT nFlags, CPoint point) 
{
	CCJControlBar::OnLButtonDown(nFlags, point);
}

⌨️ 快捷键说明

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