www.gusucode.com > VC++自制全屏的屏幕保护模块-源码程序 > VC++自制全屏的屏幕保护模块-源码程序\code\ScreenWnd.cpp

    // ScreenWnd.cpp : implementation file
// Download by http://www.NewXing.com

#include "stdafx.h"
#include "screensaveprograme.h"
////ADd the *.h function
#include "DrawWnd.h"
//////////
#include "ScreenWnd.h"

#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif

/////////////////////////////////////////////////////////////////////////////
// CScreenWnd

CScreenWnd::CScreenWnd()
{
	m_ptLast=CPoint(-1,-1);
}

CScreenWnd::~CScreenWnd()
{
}


BEGIN_MESSAGE_MAP(CScreenWnd, CDrawWnd)
	//{{AFX_MSG_MAP(CScreenWnd)
	ON_WM_ACTIVATE()
	ON_WM_ACTIVATEAPP()
	ON_WM_DESTROY()
	ON_WM_KEYDOWN()
	ON_WM_LBUTTONDOWN()
	ON_WM_MOUSEMOVE()
	ON_WM_NCACTIVATE()
	ON_WM_RBUTTONDOWN()
	ON_WM_SETCURSOR()
	ON_WM_SYSCOMMAND()
	ON_WM_SYSKEYDOWN()
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()


/////////////////////////////////////////////////////////////////////////////
// CScreenWnd message handlers

BOOL CScreenWnd::Create()
{
CRect rect(0, 0, ::GetSystemMetrics(SM_CXSCREEN),
		::GetSystemMetrics(SM_CYSCREEN));

	return CDrawWnd::Create(WS_EX_TOPMOST, WS_VISIBLE|WS_POPUP, rect, NULL, 
		0, NULL);
}

void CScreenWnd::OnActivate(UINT nState, CWnd* pWndOther, BOOL bMinimized) 
{if(nState==WA_INACTIVE) PostMessage(WM_CLOSE);
	CDrawWnd::OnActivate(nState, pWndOther, bMinimized);
	
	// TODO: Add your message handler code here
	
}

void CScreenWnd::OnActivateApp(BOOL bActive, HTASK hTask) 
{
	if(!bActive) PostMessage(WM_CLOSE);
	CDrawWnd::OnActivateApp(bActive, hTask);
	
	// TODO: Add your message handler code here
	
}

void CScreenWnd::OnDestroy() 
{
	PostQuitMessage(0);
	CDrawWnd::OnDestroy();
	
	// TODO: Add your message handler code here
	
}

void CScreenWnd::OnKeyDown(UINT nChar, UINT nRepCnt, UINT nFlags) 
{
	// TODO: Add your message handler code here and/or call default
	PostMessage(WM_CLOSE);
	CDrawWnd::OnKeyDown(nChar, nRepCnt, nFlags);
}

void CScreenWnd::OnLButtonDown(UINT nFlags, CPoint point) 
{
	// TODO: Add your message handler code here and/or call default
	PostMessage(WM_CLOSE);
	CDrawWnd::OnLButtonDown(nFlags, point);
}

void CScreenWnd::OnMouseMove(UINT nFlags, CPoint point) 
{
	// TODO: Add your message handler code here and/or call default
	if(m_ptLast==CPoint(-1,-1))m_ptLast=point;
	else if (m_ptLast!=point)PostMessage(WM_CLOSE);
	CDrawWnd::OnMouseMove(nFlags, point);
}

BOOL CScreenWnd::OnNcActivate(BOOL bActive) 
{
	// TODO: Add your message handler code here and/or call default
	if(!bActive) return FALSE;
	return CDrawWnd::OnNcActivate(bActive);
}

void CScreenWnd::OnRButtonDown(UINT nFlags, CPoint point) 
{
	// TODO: Add your message handler code here and/or call default
	
	CDrawWnd::OnRButtonDown(nFlags, point);
}

BOOL CScreenWnd::OnSetCursor(CWnd* pWnd, UINT nHitTest, UINT message) 
{
	// TODO: Add your message handler code here and/or call default
	SetCursor(NULL);
	return CDrawWnd::OnSetCursor(pWnd, nHitTest, message);
}

void CScreenWnd::OnSysCommand(UINT nID, LPARAM lParam) 
{
	// TODO: Add your message handler code here and/or call default
		if ((nID == SC_SCREENSAVE) || (nID == SC_CLOSE))
		return;
	CDrawWnd::OnSysCommand(nID, lParam);
}

void CScreenWnd::OnSysKeyDown(UINT nChar, UINT nRepCnt, UINT nFlags) 
{
	// TODO: Add your message handler code here and/or call default
	PostMessage(WM_CLOSE);
	CDrawWnd::OnSysKeyDown(nChar, nRepCnt, nFlags);
}