본문 바로가기
컴퓨터/Windows API

[C/C++] 윈도우즈 시계 프로그램2

by stdFrog 2022. 9. 26.

 이번엔 아날로그시계 프로그램이다. 잡스런 기교를 부려서 그런지 코드가 굉장히 길어졌다.

해서 본문에는 주요 동작을 하는 소스만 짧게 공개하려 한다.

 

완성된 모습은 아래 사진과 같다.

마우스가 바깥에 있을 때
마우스가 안쪽에 있을 때

 아래 코드는 초침을 그리는 기본 연산을 한다.

더보기
POINT CenterPos, pt;
int Radius;
double Radian;
double Phi;
time_t t;

time(&t);
struct tm* pt_time = localtime(&t);

CenterPos.x = 왼쪽 + 오른쪽 / 2;
CenterPos.y = 위 + 아래 / 2;

Phi = atan(1.0) * 4.0  // 3.141592 ....
Radian = fmod( 270.0 + (pt_time->tm_sec * 6.0) , 360.0) * Phi / 180.0;
Radius = ((가로 > 세로) ? 세로 : 가로) / 2;
pt.x = (int)(CenterPos.x + Radius * cos(Radian));
pt.y = (int)(CenterPos.y + Radius * sin(Radian));
MoveToEx(hdc, CenterPos.x, CenterPos.y, NULL);
LineTo(hdc, pt.x, pt.y);

 

위 코드를 반복해서 원하는 지점에 점을 찍으면 진짜 시계처럼 꾸밀 수도 있다.

 

반응형

'컴퓨터 > Windows API' 카테고리의 다른 글

[C/C++] GUI 타이머 프로그램  (1) 2022.10.15
[C/C++] 윈도우즈 시계 프로그램  (2) 2022.09.23

댓글