www.gusucode.com > VC++指定区域抓图、截屏小程序-源码程序 > VC++指定区域抓图、截屏小程序-源码程序/code/ChildView.cpp

    //Download by http://www.NewXing.com
/*
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
	文件:ChildView.cpp	类CChildView的执行文件

	版权:Firebird Software Workroom 保留

	声明:本源程序的版权受《中华人民共和国著作权法》以及其
		  它相关法律和条约的保护。任何有机会得到本源程序的
		  个人和机构,未经作者明确授权,不得将本源程序用于
		  任何商业目的(直接的或间接的)。对于非商业目的的使
		  用 (包括复制、传播、编译和修改), 原则上没有特别
		  的限制条款,但请在相关文档中说明其来源,并尊重原
		  作者的署名权。

	编写:秦传安(chings)	2000.5

	联络:Tel:(0792)6323086	E_mail:chings@163.net
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@*/
#include "fclstd.h"
#include "ImageView.h"
#include "ChildView.h"

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

CChildView::CChildView()
{
}

CChildView::~CChildView()
{

}
//////////////////////////////////////////////////////////////////////
//窗口过程
LRESULT CChildView::WindowProc(UINT msg,WPARAM wParam,LPARAM lParam)
{
	if(msg == FBWM_SETSIZE)
	{
		LPRECT prc = (LPRECT)lParam;

		SetWindowPos(m_hWnd,NULL,prc->left,prc->top,
				prc->right - prc->left,prc->bottom - prc->top,
				SWP_NOZORDER|SWP_NOACTIVATE|SWP_NOCOPYBITS);
		return 0;
	}
	
	return CFBTabCtrl::WindowProc(msg,wParam,lParam);
}
//////////////////////////////////////////////////////////////////////
int CChildView::AddImage(HBITMAP hBmp,LPTSTR pszCaption)
{
	if(hBmp == NULL)return -1;

	CImageView* pImg = new CImageView();

	if(!pImg->Create(this,(UINT)GetItemCount()+0xC800))
	{
		delete pImg;
		return -1;
	}

	pImg->SetBkColor(m_clrBack);

	if(pImg->LoadFromHandle(hBmp) == FALSE)
	{
		delete pImg;
		return -1;
	}

	int n = AddView(pImg,pszCaption);
	
	if(n == -1)
	{
		DeleteObject(hBmp);
		delete pImg;
		return -1;
	}

	pImg->SetOwner(m_pOwner);

	SetActiveView(n);
	Invalidate(TRUE);
	return n;
}
//////////////////////////////////////////////////////////////////////
int CChildView::AddImage(LPTSTR szFileName)
{
	HBITMAP hBmp = (HBITMAP)LoadImage(NULL,szFileName,IMAGE_BITMAP,0,0,LR_LOADFROMFILE);

	int i = lstrlen(szFileName) -1;
	for(;i>0;i--)
	{
		if(szFileName[i] == '\\')
			break;
	}

	return AddImage(hBmp,szFileName+(i+1));
}
//////////////////////////////////////////////////////////////////////
BOOL CChildView::SaveCurrentImage(LPTSTR szFile)
{
	CImageView* pView = (CImageView*)m_pActiveView;
	if(!pView)return FALSE;

	return pView->SaveToBMPFile(szFile);
}
//////////////////////////////////////////////////////////////////////
void  CChildView::EnableSelect(BOOL bEnable)
{
	if(!m_pActiveView)
		return;

	CImageView* pImg = (CImageView*)m_pActiveView;

	if(pImg->IsEmpty())
		return;

	pImg->m_bCanSel = bEnable;
}
//////////////////////////////////////////////////////////////////////
void  CChildView::ChangeBkColor(COLORREF clr)
{
	if(m_clrBack == clr)
		return;

	m_clrBack = clr;

	int n = GetItemCount();
	if(n == 0)return;

	CImageView* pImg;

	for(int i = 0; i<n; i++)
	{
		pImg = (CImageView*)GetAt(i);
		if(pImg)
			pImg->SetBkColor(clr);
	}

	if(m_pActiveView)
		m_pActiveView->Invalidate();
}