www.pudn.com > vc++6.0screen.rar > ScreenWnd.cpp
// ScreenWnd.cpp : implementation file
//
#include "stdafx.h"
#include "Screen.h"
#include "ScreenWnd.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// CScreenWnd
CScreenWnd::CScreenWnd()
{
m_prePoint=CPoint(-1, -1);
}
CScreenWnd::~CScreenWnd()
{
}
LPCSTR CScreenWnd::lpszClassName=NULL;
BEGIN_MESSAGE_MAP(CScreenWnd, CWnd)
//{{AFX_MSG_MAP(CScreenWnd)
ON_WM_KEYDOWN()
ON_WM_LBUTTONDOWN()
ON_WM_RBUTTONDOWN()
ON_WM_SYSKEYDOWN()
ON_WM_ACTIVATE()
ON_WM_ACTIVATEAPP()
ON_WM_MOUSEMOVE()
ON_WM_PAINT()
ON_WM_TIMER()
ON_WM_DESTROY()
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CScreenWnd message handlers
void CScreenWnd::DrawBitmap(CDC &dc, int nIndexBit)
{
CDC dcmem;
dcmem.CreateCompatibleDC(&dc);
CBitmap m_Bitmap;
m_Bitmap.LoadBitmap(IDB_BITMAP1+nIndexBit);
dcmem.SelectObject(m_Bitmap);
dc.BitBlt(0,0,840,680,&dcmem,0,0,SRCCOPY);
}
void CScreenWnd::OnKeyDown(UINT nChar, UINT nRepCnt, UINT nFlags)
{
// TODO: Add your message handler code here and/or call default
PostMessage(WM_CLOSE);
CWnd::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);
CWnd::OnLButtonDown(nFlags, point);
}
void CScreenWnd::OnRButtonDown(UINT nFlags, CPoint point)
{
// TODO: Add your message handler code here and/or call default
PostMessage(WM_CLOSE);
CWnd::OnRButtonDown(nFlags, point);
}
void CScreenWnd::OnSysKeyDown(UINT nChar, UINT nRepCnt, UINT nFlags)
{
// TODO: Add your message handler code here and/or call default
PostMessage(WM_CLOSE);
CWnd::OnSysKeyDown(nChar, nRepCnt, nFlags);
}
void CScreenWnd::OnActivate(UINT nState, CWnd* pWndOther, BOOL bMinimized)
{
CWnd::OnActivate(nState, pWndOther, bMinimized);
if (nState==WA_INACTIVE)
PostMessage(WM_CLOSE);
// TODO: Add your message handler code here
}
void CScreenWnd::OnActivateApp(BOOL bActive, HTASK hTask)
{
CWnd::OnActivateApp(bActive, hTask);
// TODO: Add your message handler code here
if(!bActive) //is being deactivated
PostMessage(WM_CLOSE);
}
void CScreenWnd::OnMouseMove(UINT nFlags, CPoint point)
{
// TODO: Add your message handler code here and/or call default
if(m_prePoint == CPoint(-1,-1))
m_prePoint = point;
else if(m_prePoint!=point)
PostMessage(WM_CLOSE);
CWnd::OnMouseMove(nFlags, point);
}
void CScreenWnd::OnPaint()
{
CPaintDC dc(this); // device context for painting
// TODO: Add your message handler code here
CBrush brush(RGB(0,0,0));
CRect rect;
GetClientRect(rect);
dc.FillRect(&rect,&brush);
// Do not call CWnd::OnPaint() for painting messages
}
void CScreenWnd::OnTimer(UINT nIDEvent)
{
// TODO: Add your message handler code here and/or call default
CClientDC dc(this);
static nIndexBit=0;
if(nIndexBit>=5)
nIndexBit=0;
DrawBitmap(dc, nIndexBit++);
CWnd::OnTimer(nIDEvent);
}
void CScreenWnd::OnDestroy()
{
CWnd::OnDestroy();
// TODO: Add your message handler code here
KillTimer(m_timer);
}
BOOL CScreenWnd::Create()
{
if(lpszClassName==NULL)
{
lpszClassName=AfxRegisterWndClass(CS_HREDRAW|CS_VREDRAW, ::LoadCursor(AfxGetResourceHandle(),MAKEINTRESOURCE(IDC_NOCURSOR)));
//注册类;IDC_NOCURSOR为新建光标的ID,这个光标没有任何图案
}
CRect rect(0, 0, ::GetSystemMetrics(SM_CXSCREEN),
::GetSystemMetrics(SM_CYSCREEN));
CreateEx(WS_EX_TOPMOST, lpszClassName, _T(""), WS_VISIBLE|WS_POPUP,
rect.left, rect.top, rect.right-rect.left, rect.bottom-rect.top, GetSafeHwnd(), NULL, NULL); //创建一个全屏窗口
m_timer=SetTimer(1, 1000, NULL);//计时器,ID_TIMER别忘了定义
return TRUE;
}