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

📄 descview.cpp

📁 eCos1.31版
💻 CPP
字号:
//####COPYRIGHTBEGIN####//                                                                          // ----------------------------------------------------------------------------// Copyright (C) 1998, 1999, 2000 Red Hat, Inc.//// This program is part of the eCos host tools.//// This program is free software; you can redistribute it and/or modify it // under the terms of the GNU General Public License as published by the Free // Software Foundation; either version 2 of the License, or (at your option) // any later version.// // This program is distributed in the hope that it will be useful, but WITHOUT // ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or // FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for // more details.// // You should have received a copy of the GNU General Public License along with// this program; if not, write to the Free Software Foundation, Inc., // 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.//// ----------------------------------------------------------------------------//                                                                          //####COPYRIGHTEND####// DescView.cpp : implementation file//#include "stdafx.h"#include "DescView.h"#include "ConfigItem.h"#include "ConfigTool.h"#include "ControlView.h"#include "ConfigToolDoc.h"#include "CTUtils.h"#include "resource.h"#ifndef PLUGIN#include "MainFrm.h"#endif#ifdef _DEBUG#define new DEBUG_NEW#undef THIS_FILEstatic char THIS_FILE[] = __FILE__;#endif/////////////////////////////////////////////////////////////////////////////// CDescViewIMPLEMENT_DYNCREATE(CDescView, CScrollView)CDescView::CDescView():m_pti(NULL){    CConfigTool::SetDescView(this);}CDescView::~CDescView(){    CConfigTool::SetDescView(0);}BEGIN_MESSAGE_MAP(CDescView, CScrollView)	//{{AFX_MSG_MAP(CDescView)	ON_WM_ERASEBKGND()	ON_WM_SIZE()	ON_WM_CREATE()	ON_WM_HELPINFO()	//}}AFX_MSG_MAPEND_MESSAGE_MAP()/////////////////////////////////////////////////////////////////////////////// CDescView drawingvoid CDescView::OnInitialUpdate(){	CScrollView::OnInitialUpdate();    CControlView *pControlView=CConfigTool::GetControlView();    if(pControlView){        HTREEITEM hItem = pControlView->GetSelectedItem();        if(NULL!=hItem){            OnUpdate(this,(LPARAM)CConfigToolDoc::SelChanged,(CObject *)&(pControlView->TI(hItem)));        }    }	// TODO: calculate the total size of this view	SIZE sizeTotal;	sizeTotal.cx = sizeTotal.cy = 100;	SetScrollSizes(MM_TEXT, sizeTotal);}void CDescView::OnDraw(CDC* pDC){	if(m_pti){		CRect rcClient;		GetClientRect(rcClient);		rcClient.bottom=m_nTotalHeight;        #ifdef PLUGIN        CFont *pOldFont=pDC->SelectObject(CFont::FromHandle((HFONT)GetStockObject(DEFAULT_GUI_FONT)));        #else		CMainFrame *pMain=(CMainFrame *)AfxGetMainWnd();		CFont *pOldFont=pDC->SelectObject(&pMain->GetPaneFont(CMainFrame::ShortDesc));        #endif		pDC->SetBkColor(GetSysColor(COLOR_INFOBK));        pDC->SetBkMode(TRANSPARENT);		pDC->DrawText(m_pti->Desc(),rcClient,DT_NOPREFIX|DT_WORDBREAK);		pDC->SelectObject(pOldFont);    }}/////////////////////////////////////////////////////////////////////////////// CDescView diagnostics#ifdef _DEBUGvoid CDescView::AssertValid() const{	CScrollView::AssertValid();}void CDescView::Dump(CDumpContext& dc) const{	CScrollView::Dump(dc);}#endif //_DEBUG/////////////////////////////////////////////////////////////////////////////// CDescView message handlersvoid CDescView::OnUpdate(CView* pSender, LPARAM lHint, CObject* pHint) {	CConfigToolDoc* pDoc = CConfigTool::GetConfigToolDoc();	// For all known hints we redraw everything	// The Selchanged hint tells us what to redraw	switch(lHint){		case CConfigToolDoc::SelChanged:			if(pDoc->ItemCount()>0){				m_pti=(CConfigItem *)pHint;			} else {				// In process of destroying configitems - no nothing				m_pti=NULL;			}			break;		case CConfigToolDoc::Clear:			m_pti=NULL;			break;		default:			return;	}	SetScrollInfo();	Invalidate();	UNUSED_ALWAYS(pSender);}BOOL CDescView::OnEraseBkgnd(CDC* pDC) {	CRect rcClient;	pDC->GetClipBox(rcClient);	pDC->FillSolidRect(rcClient,GetSysColor(COLOR_INFOBK));			return TRUE;//return CScrollView::OnEraseBkgnd(pDC);}void CDescView::SetScrollInfo(){	CSize sizePage,sizeLine,sizeTotal;	if(m_pti){		CDC *pDC=GetDC();		CRect rcClient;		GetClientRect(rcClient);        #ifdef PLUGIN        CFont *pOldFont=pDC->SelectObject(CFont::FromHandle((HFONT)GetStockObject(DEFAULT_GUI_FONT)));        #else		CMainFrame *pMain=(CMainFrame *)AfxGetMainWnd();		CFont *pOldFont=pDC->SelectObject(&pMain->GetPaneFont(CMainFrame::ShortDesc));        #endif		//pDC->DrawText(m_pti->Desc(),rcClient,DT_NOPREFIX|DT_WORDBREAK);		sizeTotal.cx=0;		m_nTotalHeight=sizeTotal.cy=pDC->DrawText(m_pti->Desc(),rcClient,DT_NOPREFIX|DT_CALCRECT|DT_WORDBREAK);		TEXTMETRIC tm;		pDC->GetTextMetrics(&tm);		sizeLine.cx=0;		sizeLine.cy=tm.tmHeight;		sizePage.cx=0;		sizePage.cy=sizeTotal.cy-sizeLine.cy;		pDC->SelectObject(pOldFont);		ReleaseDC(pDC);	} else {		sizeTotal=CSize(0,0);		sizePage=sizeDefault;		sizeLine=sizeDefault;	}	SetScrollSizes(MM_TEXT,sizeTotal,sizePage,sizeLine);}void CDescView::OnSize(UINT nType, int cx, int cy) {	CScrollView::OnSize(nType, cx, cy);		SetScrollInfo();	}int CDescView::OnCreate(LPCREATESTRUCT lpCreateStruct) {	if (CScrollView::OnCreate(lpCreateStruct) == -1)		return -1;			SendMessage(WM_SETFONT, (WPARAM)GetStockObject(DEFAULT_GUI_FONT), 0);		return 0;}      BOOL CDescView::OnHelpInfo(HELPINFO*) {  return CConfigTool::GetConfigToolDoc()->ShowURL(CUtils::LoadString(IDS_DESC_VIEW_HELP));	}

⌨️ 快捷键说明

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