定時變色

/*------------------------------------------------------------------------
   DEVCAPS1.C -- Device Capabilities Display Program No. 1
	         (c) Charles Petzold, 1998
 ----------------------------------------------------------------------*/
#include <windows.h>

#define ID_TIMER 1

LRESULT CALLBACK WndProc (HWND, UINT, WPARAM, LPARAM) ;
int WINAPI WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance,
            PSTR szCmdLine, int iCmdShow)
{
	static TCHAR szAppName[] = TEXT ("Beeper1") ;
	HWND 		hwnd ;
	MSG 		msg ;
	WNDCLASS 	wndclass ;

	wndclass.style 		= CS_HREDRAW | CS_VREDRAW ;
	wndclass.lpfnWndProc= WndProc ;
	wndclass.cbClsExtra	= 0 ;
	wndclass.cbWndExtra = 0 ;
	wndclass.hInstance 	= hInstance ;
	wndclass.hIcon 		= LoadIcon (NULL, IDI_APPLICATION) ;
	wndclass.hCursor	= LoadCursor (NULL, IDC_ARROW) ;
	wndclass.hbrBackground	= (HBRUSH) GetStockObject (WHITE_BRUSH) ;
	wndclass.lpszMenuName	= NULL ;
	wndclass.lpszClassName	= szAppName ;

	if (!RegisterClass (&wndclass))
	{
		MessageBox (	NULL, TEXT ("This program requires Windows NT!"),
             				szAppName, MB_ICONERROR) ;
		return 0 ;
     }

	hwnd = CreateWindow (	szAppName, TEXT ("Beeper1 Timer Demo"),
                				WS_OVERLAPPEDWINDOW,
               				    CW_USEDEFAULT, CW_USEDEFAULT,
        				        CW_USEDEFAULT, CW_USEDEFAULT,
   				                NULL, NULL, hInstance, NULL) ;

	ShowWindow (hwnd, iCmdShow) ;
	UpdateWindow (hwnd) ;

	while (GetMessage (&msg, NULL, 0, 0))
     {
		TranslateMessage (&msg) ;
		DispatchMessage (&msg) ;
	}
	return msg.wParam ;
}

LRESULT CALLBACK WndProc (HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
{
	
	HDC		hdc ;
	int		i ;
	PAINTSTRUCT	ps ;
	static BOOL fFlipFlop = FALSE;
	HBRUSH		hBrush;
	RECT      rc;


	

	static HRGN hRgnClip , hRgnPart, hRgnFull;
	HRGN        hRgnTemp[2];


	switch (message)
     {
	
	case WM_CREATE:
		 SetTimer(hwnd, ID_TIMER, 1000, NULL);
		 return 0;

	case WM_TIMER:
		 MessageBeep(-1);
		 fFlipFlop = !fFlipFlop;
		 InvalidateRect(hwnd, NULL, FALSE);
		 return 0;

	case WM_PAINT:
		hdc = BeginPaint(hwnd, &ps);

		GetClientRect(hwnd, &rc);
		//hBrush = CreateSolidBrush(fFlipFlop ? RGB(255,0,0) : RGB(0,0,255));
		hBrush = CreateSolidBrush( RGB(rand()%256, rand() % 256, rand() % 256));
		FillRect(hdc, &rc, hBrush);

		EndPaint(hwnd, &ps);
		DeleteObject(hBrush);
		
		return 0 ;

	case WM_DESTROY:
		KillTimer(hwnd, ID_TIMER);
		PostQuitMessage (0) ;
		return 0 ;
	}
	return DefWindowProc (hwnd, message, wParam, lParam) ;
}
TimerProc
/*------------------------------------------------------------------------
   DEVCAPS1.C -- Device Capabilities Display Program No. 1
	         (c) Charles Petzold, 1998
 ----------------------------------------------------------------------*/
#include 

#define ID_TIMER 1

LRESULT CALLBACK WndProc (HWND, UINT, WPARAM, LPARAM) ;
VOID CALLBACK  TimerProc(HWND ,UINT, UINT, DWORD);
int WINAPI WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance,
            PSTR szCmdLine, int iCmdShow)
{
	static TCHAR szAppName[] = TEXT ("Beeper2") ;
	HWND 		hwnd ;
	MSG 		msg ;
	WNDCLASS 	wndclass ;

	wndclass.style 		= CS_HREDRAW | CS_VREDRAW ;
	wndclass.lpfnWndProc= WndProc ;
	wndclass.cbClsExtra	= 0 ;
	wndclass.cbWndExtra = 0 ;
	wndclass.hInstance 	= hInstance ;
	wndclass.hIcon 		= LoadIcon (NULL, IDI_APPLICATION) ;
	wndclass.hCursor	= LoadCursor (NULL, IDC_ARROW) ;
	wndclass.hbrBackground	= (HBRUSH) GetStockObject (WHITE_BRUSH) ;
	wndclass.lpszMenuName	= NULL ;
	wndclass.lpszClassName	= szAppName ;

	if (!RegisterClass (&wndclass))
	{
		MessageBox (	NULL, TEXT ("This program requires Windows NT!"),
             				szAppName, MB_ICONERROR) ;
		return 0 ;
     }

	hwnd = CreateWindow (	szAppName, TEXT ("Beeper2 Timer Demo"),
                				WS_OVERLAPPEDWINDOW,
               				    CW_USEDEFAULT, CW_USEDEFAULT,
        				        CW_USEDEFAULT, CW_USEDEFAULT,
   				                NULL, NULL, hInstance, NULL) ;

	ShowWindow (hwnd, iCmdShow) ;
	UpdateWindow (hwnd) ;

	while (GetMessage (&msg, NULL, 0, 0))
     {
		TranslateMessage (&msg) ;
		DispatchMessage (&msg) ;
	}
	return msg.wParam ;
}

LRESULT CALLBACK WndProc (HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
{
	
	HDC		hdc ;
	int		i ;
	PAINTSTRUCT	ps ;
	static BOOL fFlipFlop = FALSE;
	HBRUSH		hBrush;
	RECT      rc;


	

	static HRGN hRgnClip , hRgnPart, hRgnFull;
	HRGN        hRgnTemp[2];


	switch (message)
     {
	
	case WM_CREATE:
		 SetTimer(hwnd, ID_TIMER, 1000, TimerProc);
		 return 0;

	case WM_TIMER:
		 MessageBeep(-1);
		 fFlipFlop = !fFlipFlop;
		 InvalidateRect(hwnd, NULL, FALSE);
		 return 0;

	case WM_PAINT:
		hdc = BeginPaint(hwnd, &ps);

		GetClientRect(hwnd, &rc);
		//hBrush = CreateSolidBrush(fFlipFlop ? RGB(255,0,0) : RGB(0,0,255));
		hBrush = CreateSolidBrush( RGB(rand()%256, rand() % 256, rand() % 256));
		FillRect(hdc, &rc, hBrush);

		EndPaint(hwnd, &ps);
		DeleteObject(hBrush);
		
		return 0 ;

	case WM_DESTROY:
		KillTimer(hwnd, ID_TIMER);
		PostQuitMessage (0) ;
		return 0 ;
	}
	return DefWindowProc (hwnd, message, wParam, lParam) ;
}

VOID CALLBACK TimerProc(HWND hwnd, UINT message, UINT iTimerID, DWORD dwTime)
{
	static BOOL fFlipFlop = FALSE;
	HBRUSH    hBrush;
	HDC       hdc;
	RECT      rc;

	MessageBeep(-1);
	fFlipFlop = !fFlipFlop;

	GetClientRect(hwnd, &rc);
	hdc = GetDC(hwnd);
	hBrush = CreateSolidBrush(fFlipFlop ? RGB(255,0,0) : RGB(0,0,255));

	FillRect(hdc, &rc, hBrush);
	ReleaseDC(hwnd, hdc);
	DeleteObject(hBrush);

}

發佈了60 篇原創文章 · 獲贊 5 · 訪問量 12萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章