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

📄 msgview.cpp

📁 大家好,好久没做什么东西了,前些日子偶然看到本论坛的一个FTP多线程断点续传的源代码
💻 CPP
字号:
// MsgView.cpp : implementation file
//

#include "stdafx.h"
#include "FTPTranser.h"
#include "FTPTranserDoc.h"
#include "MsgView.h"
#include ".\msgview.h"


// CMsgView

IMPLEMENT_DYNCREATE(CMsgView, CScrollView)

CMsgView::CMsgView()
{
}

CMsgView::~CMsgView()
{
}


BEGIN_MESSAGE_MAP(CMsgView, CScrollView)
END_MESSAGE_MAP()


// CMsgView drawing

void CMsgView::OnInitialUpdate()
{
	CScrollView::OnInitialUpdate();

	CSize sizeTotal;
	// TODO: calculate the total size of this view
	sizeTotal.cx = sizeTotal.cy = 100;
	SetScrollSizes(MM_TEXT, sizeTotal);
}

void CMsgView::OnDraw(CDC* pDC)
{
	CFTPTranserDoc* pDoc = (CFTPTranserDoc*)GetDocument();
	if(pDoc == NULL)
		return;
	//如果什么都没有要写的,就返回
	pDoc->sec.Lock();
	if(pDoc->myList.GetSize() <= 0)
		return;
	
	POSITION pos = pDoc->myList.GetHeadPosition();	
	for( int i=0;i<pDoc->myList.GetSize();i++)
	{
		CString &str = pDoc->myList.GetNext(pos);
		int y = i*20+MARGIN;
		pDC->TextOut(MARGIN,y,str);
	}
	pDoc->sec.Unlock();
	// TODO: add draw code here
}


// CMsgView diagnostics

#ifdef _DEBUG
void CMsgView::AssertValid() const
{
	CScrollView::AssertValid();
}

void CMsgView::Dump(CDumpContext& dc) const
{
	CScrollView::Dump(dc);
}
#endif //_DEBUG


// CMsgView message handlers

void CMsgView::OnUpdate(CView* pSender, LPARAM lHint, CObject* pHint)
{
	CScrollView::OnUpdate(pSender,lHint,pHint);	
	if(!this->IsWindowVisible())
		return;
	CFTPTranserDoc * pDoc = (CFTPTranserDoc *)GetDocument();
	if(pDoc == NULL)
		return;
	
	pDoc->sec.Lock();
	if(pDoc->myList.GetSize() <= 0)
	{
		pDoc->sec.Unlock();
		return;
	}
	int maxlen = 0;
	int lennum = (int)pDoc->myList.GetSize();
	POSITION pos = pDoc->myList.GetHeadPosition();
	for(int i = 0; i<lennum ; i++)
	{
		CString& str = pDoc->myList.GetAt(pos);
		if(str.GetLength() > maxlen)
			maxlen = str.GetLength();
		pDoc->myList.GetNext(pos);
	}
	pDoc->sec.Unlock();
	
	SIZE size;
	size.cx = maxlen * 8 + MARGIN;
	size.cy = lennum * 20 + MARGIN;
	SetScrollSizes(MM_TEXT,size);
	
}


⌨️ 快捷键说明

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