Dùng hàm xử lý

Một phần của tài liệu Xử lý bản phím, thiết bị chuột và bộ định thời gian (Trang 29 - 32)

ðoạn chương trình sau cũng khai báo sử dụng một bộñịnh thời gian, nhưng khai báo trực tiếp, tức là khi hết thời gian chờ thay vì truyền thông ñiệp WM_TIMER thì Windows gọi hàm

TimerProc thực hiện.

Chương trình khi thực thi sẽ xuất ra một dạng ñồng hồñiện tử theo dạng : giờ : phút :giây.

#include <time.h> #include "stdio.h" #define IDT_TIMER1 1

LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM

lParam)

{

PAINTSTRUCT ps; HDC hdc;

/* Khai báo biến lưu các giá tr không gian*/

struct tm *newtime; time_t CurTime; TCHAR str [255]; RECT rc;

/* Biến LOGFONT ñể to font mi*/

LOGFONT lf; HFONT oldFont, font;

COLORREF color = RGB (255, 0, 0), oldColor; switch ( message )

{

case WM_CREATE:

/* khi to bộñịnh thi gian, và khai báo hàm x lý Timer*/

SetTimer ( hWnd, IDT_TIMER1, 1000, ( TIMERPROC ) TimerProc ); break; case WM_PAINT: hdc = BeginPaint ( hWnd, &ps ); /* Ly giờñồng h h thng*/ time( &CurTime ); Tech24.vn

newtime = localtime ( &CurTime ); GetClientRect ( hWnd, &rc );

/* To chui xut ra màn hình*/

sprintf(str,"Gio hien tai : %d gio: %d phut: %d giay", newtime->tm_hour,newtime->tm_min, newtime-

>tm_sec);

/* Thiết lp màu kí t xut*/

oldColor = SetTextColor ( hdc, color );

/* To font riêng ñể dùng*/

memset ( &lf, 0, sizeof ( LOGFONT ) );

lf.lfHeight = 50;

strcpy ( lf.lfFaceName, "Tahoma" ); font = CreateFontIndirect ( &lf );

oldFont = ( HFONT ) SelectObject ( hdc,font );

/* Xut ra màn hình*/

DrawText ( hdc, str, strlen(str), &rc, DT_CENTER | DT_VCENTER | DT_SINGLELINE );

/* Ly li các giá tr mc ñịnh*/ SetTextColor ( hdc,oldColor ); SelectObject ( hdc,oldFont ); DeleteObject ( font ); EndPaint ( hWnd, &ps ); break; case WM_DESTROY: PostQuitMessage ( 0 ); break; default:

return DefWindowProc ( hWnd, message, wParam, lParam ); }

return 0; }

/* Hàm x lý ca Timer*/

VOID CALLBACK TimerProc( HWND hwnd, UINT uMsg, UINT_PTR idEvent, DWORD dwTime) {

/* Hàm này ñơn gin yêu cu tô li vùng làm vic*/

RECT rc;

GetClientRect ( hwnd, &rc ); InvalidateRect ( hwnd, &rc, TRUE ); }

Một phần của tài liệu Xử lý bản phím, thiết bị chuột và bộ định thời gian (Trang 29 - 32)

Tải bản đầy đủ (PDF)

(32 trang)