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

📄 winclock.cpp

📁 定时锁住鼠标键盘
💻 CPP
字号:

//
// WinClock.h - Implementation of CWinClock class
// Ryan Lederman, ryan@winprog.org
// January 21, 2002
//

#include "WinClock.h"
#include "hook.h"
int bz=1;
CWinClock::CWinClock()  
{
}
CWinClock::~CWinClock() {}

BOOL CWinClock::Create( PCLOCKSTRUCT cs )
{
	COPYDATASTRUCT cds = {0};

	if( !cs )
		return FALSE;

	m_hWnd = CreateWindow( "STATIC", "", WS_CHILD | WS_VISIBLE, cs->x, cs->y, cs->width, cs->height, cs->hWndParent, NULL, GetModuleHandle( NULL ), NULL );

	if( m_hWnd == NULL )
		return FALSE;

	// Set local variables
	m_clrBack =RGB(0,0,0);// cs->clrBk;
	m_clrFore = cs->clrFore;

	m_hFont = CreateFont( cs->iFontHeight ,0,0,0, FW_BOLD,0,0,0,DEFAULT_CHARSET,OUT_DEFAULT_PRECIS,CLIP_DEFAULT_PRECIS,DEFAULT_QUALITY,DEFAULT_PITCH, cs->szFontName );

	// Subclass for painting
	m_lOldWndProc = SetWindowLong( m_hWnd, GWL_WNDPROC, (LONG)ClockProc );

	cds.dwData = m_lOldWndProc;
	cds.lpData = this;
	cds.cbData = 4;

	SendMessage( m_hWnd, WM_COPYDATA, (WPARAM)m_hWnd, (LPARAM)&cds );

	TimerProc( NULL, WM_COPYDATA, 0, (DWORD)&cds );

	m_iTimerID = SetTimer( NULL, 0, 100, (TIMERPROC)TimerProc );

	ShowWindow( m_hWnd, SW_SHOW );

	return TRUE;
}

BOOL CWinClock::Destroy( void )
{
	DeleteObject( m_hFont );
	KillTimer( NULL, m_iTimerID );
	return TRUE;
}

VOID CALLBACK CWinClock::TimerProc( HWND hwnd, UINT uMsg, UINT_PTR idEvent, DWORD dwTime )
{
	static CWinClock *thisclock = NULL;

	if( uMsg == WM_COPYDATA )
	{
		thisclock = (CWinClock*)((PCOPYDATASTRUCT)dwTime)->lpData;
		return;
	}

	InvalidateRect( thisclock->m_hWnd, NULL, FALSE );
	UpdateWindow( thisclock->m_hWnd );
}

LRESULT CALLBACK CWinClock::ClockProc( HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam )
{
	static lOldWndProc = 0;
	static CWinClock *thisclock = NULL;

	PCOPYDATASTRUCT pcs;

	switch( msg )
	{
		case WM_COPYDATA:
			pcs = (PCOPYDATASTRUCT)lParam;
			lOldWndProc = pcs->dwData;
			thisclock   = (CWinClock*)pcs->lpData;
		break;
		case WM_PAINT:
			return ((CWinClock*)thisclock)->OnPaint( hWnd );

	default:
		if( lOldWndProc )
			return CallWindowProc((WNDPROC)lOldWndProc, hWnd, msg, wParam, lParam );
	}
	if( lOldWndProc )
		return CallWindowProc((WNDPROC)lOldWndProc, hWnd, msg, wParam, lParam );

	return 0;
}

BOOL CWinClock::OnPaint( HWND hWnd )
{
	PAINTSTRUCT ps = {0};
	HDC dc;
	RECT winRect   = {0};
	HBRUSH hBrushBkgnd;
	HFONT hFontOld;
	SYSTEMTIME st = {0};
	char szOutput[512] = {0};
	char szAMPM[3]     = {0};

	dc = BeginPaint( hWnd, &ps );
	GetClientRect( hWnd, &winRect );
	
//	hBrushBkgnd = CreateSolidBrush(RGB(0,0,0 ));// m_clrBack );
//	FillRect( dc, &winRect, hBrushBkgnd );

	SetBkColor( dc, RGB(255,255,255 ) );
	SetTextColor( dc, RGB(0,0,0 ) );

	hFontOld = (HFONT)SelectObject( dc, m_hFont );

	// Get the time
	GetLocalTime( &st );
	
	strcpy( szAMPM, "AM" );

	if( st.wHour == 0 )
	{
		st.wHour = 12;
		memset( szAMPM, 0, 3 );
		strcpy( szAMPM, "AM" );
	}

	if( st.wHour > 12 )
	{
		st.wHour -= 12;
		memset( szAMPM, 0, 3 );
		strcpy( szAMPM, "PM" );
	}
	if((st.wMinute==0||st.wMinute==30)&&bz==1)
	{
		EnableMouseCapture();
		bz=0;
	}

	if((st.wMinute==5||st.wMinute==35)&&bz==0)
	{
		DisableMouseCapture();
		bz=1;
	}

	wsprintf( szOutput, "%d:%02d:%d %s : %02d.%02d.%d", st.wHour, st.wMinute, st.wSecond, szAMPM, st.wMonth, st.wDay, st.wYear );

	DrawTextEx( dc, szOutput, strlen( szOutput ), &winRect, DT_VCENTER | DT_CENTER, NULL );

	SelectObject( dc, hFontOld );
	DeleteObject( hBrushBkgnd );
	EndPaint( hWnd, &ps );

	return TRUE;
}

⌨️ 快捷键说明

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