Initial commit
This commit is contained in:
75
nkosrc4/Neko98/DesktopPet.cpp
Executable file
75
nkosrc4/Neko98/DesktopPet.cpp
Executable file
@@ -0,0 +1,75 @@
|
||||
// DesktopPet.cpp: implementation of the CDesktopPet class.
|
||||
//
|
||||
//////////////////////////////////////////////////////////////////////
|
||||
|
||||
#include "DesktopPet.h"
|
||||
|
||||
//constants
|
||||
#define UPDATE_COUNTER_MAX 50 //number of redraws until desktop handle is recalculated
|
||||
|
||||
//////////////////////////////////////////////////////////////////////
|
||||
// Construction/Destruction
|
||||
//////////////////////////////////////////////////////////////////////
|
||||
|
||||
CDesktopPet::CDesktopPet() : CDesktopHack(), CPet()
|
||||
{
|
||||
//clear the update counter
|
||||
m_nUpdateHWndCounter = 0;
|
||||
|
||||
//set bounds
|
||||
GetDesktopRect( m_rcBounds );
|
||||
}
|
||||
|
||||
CDesktopPet::~CDesktopPet()
|
||||
{
|
||||
RedrawWindow( m_hWndDesktop, NULL, NULL, RDW_INVALIDATE|RDW_ERASE );
|
||||
}
|
||||
|
||||
|
||||
|
||||
//////////////////////////////////////////////////////////////////////
|
||||
// Member Functions
|
||||
//////////////////////////////////////////////////////////////////////
|
||||
|
||||
void CDesktopPet::Draw( int nImage )
|
||||
{
|
||||
//grab the device context of the desktop
|
||||
HDC hDC = GetDC( m_hWndDesktop );
|
||||
|
||||
//draw the icon on it
|
||||
DrawIconEx( hDC, m_ptPosition.x, m_ptPosition.y, m_hIcons[nImage], m_sizeImage.cx, m_sizeImage.cy, 0, NULL, DI_NORMAL );
|
||||
|
||||
//release the device context
|
||||
ReleaseDC( m_hWndDesktop, hDC );
|
||||
|
||||
//increment the update counter and update if required
|
||||
if( ++m_nUpdateHWndCounter > UPDATE_COUNTER_MAX )
|
||||
{
|
||||
FindDesktopHandle();
|
||||
GetDesktopRect( m_rcBounds );
|
||||
}
|
||||
}
|
||||
|
||||
void CDesktopPet::Erase()
|
||||
{
|
||||
//set up rect to be erased
|
||||
RECT rcErase = { m_ptOldPosition.x, m_ptOldPosition.y,
|
||||
m_ptOldPosition.x + m_sizeImage.cx, m_ptOldPosition.y + m_sizeImage.cy };
|
||||
|
||||
//invalidate it and tell it to update
|
||||
InvalidateRect( m_hWndDesktop, &rcErase, TRUE );
|
||||
UpdateWindow( m_hWndDesktop );
|
||||
}
|
||||
|
||||
void CDesktopPet::DrawOnTarget( int x, int y, HICON hIcon )
|
||||
{
|
||||
//grab the device context of the desktop
|
||||
HDC hDC = GetDC( m_hWndDesktop );
|
||||
|
||||
//draw the icon on it
|
||||
DrawIconEx( hDC, x, y, hIcon, 0, 0, 0, NULL, DI_NORMAL );
|
||||
|
||||
//release the device context
|
||||
ReleaseDC( m_hWndDesktop, hDC );
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user