본문 바로가기
프로그래밍/API

API-일회용 타이머

by 리뷰하는 (게임)프로그래머_리프TV 2010. 4. 21.




한번 사용하고 버리는 일회용 타이머,

#include <windows.h>

LRESULT CALLBACK WndProc( HWND, UINT, WPARAM, LPARAM );
HINSTANCE g_hInst;
LPCTSTR lpszClass = TEXT("OnceTimer");

int APIENTRY WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance,
					 LPSTR lpszCmdParam, int nCmdShow )
{
	HWND hWnd;
	MSG Message;
	WNDCLASS WndClass;
	g_hInst = hInstance;

	WndClass.cbClsExtra = 0;
	WndClass.cbWndExtra = 0;
	WndClass.hbrBackground = (HBRUSH)GetStockObject( COLOR_WINDOW+1 );
	WndClass.hCursor = LoadCursor( NULL, IDC_ARROW );
	WndClass.hIcon = LoadIcon( NULL, IDI_APPLICATION );
	WndClass.hInstance = hInstance;
	WndClass.lpfnWndProc = WndProc;
	WndClass.lpszClassName = lpszClass;
	WndClass.lpszMenuName = NULL;
	WndClass.style = CS_HREDRAW | CS_VREDRAW;
	RegisterClass( &WndClass );

	hWnd = CreateWindow(lpszClass, lpszClass, WS_OVERLAPPEDWINDOW,
		CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT,
		NULL, (HMENU)NULL, hInstance, NULL );
	ShowWindow( hWnd, nCmdShow );

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

LRESULT CALLBACK WndProc( HWND hWnd, UINT iMessage, WPARAM wParam, LPARAM lParam )
{
	HDC hdc;
	PAINTSTRUCT ps;
	static TCHAR str[128];

	switch( iMessage )
	{
	case WM_LBUTTONDOWN:		
		// 마우스 왼쪽 버튼을 누르면, str에 문자열을 삽입하면서
		lstrcpy( str, TEXT("왼쪽 버튼을 눌렀습니다.") );
		// PAINT:
		InvalidateRect( hWnd, NULL, TRUE );
		// 그리고 타이머(3초)를 생성한다.
		SetTimer( hWnd, 1, 3000, NULL );
		return 0;
	case WM_TIMER:
		// 3초가 지나서 TIMER로 오게 되면
		KillTimer( hWnd, 1 );	// 타이머를 죽이고
		lstrcpy( str, TEXT("") );	// str을 지운다.
		// PAINT
		InvalidateRect( hWnd, NULL,TRUE );
		return 0;
	case WM_PAINT:
		hdc = BeginPaint( hWnd, &ps );
		TextOut( hdc, 10, 10, str, lstrlen( str ) );
		EndPaint( hWnd, &ps );
		return 0;
	case WM_DESTROY:
		PostQuitMessage(0);
		return 0;
	}
	return( DefWindowProc( hWnd, iMessage, wParam, lParam));
}​


// 실행 화면


설명 : 작업 영역 내에서 마우스 왼쪽 버튼을 누르면, 화면에 문자를 출력 후 3초후에 다시 지운다.

'프로그래밍 > API' 카테고리의 다른 글

API-resource(1)  (0) 2010.04.21
API-작업 영역  (0) 2010.04.21
API-무한의 작업을 위한 타이머(2)  (0) 2010.04.21
API-무한의 작업을 위한 타이머(1)  (0) 2010.04.21
API-2개의 타이머  (0) 2010.04.21