아무래도 공부 기간이 길어지다 보니 블로그에 신경 쓸 겨를이 없다. 당분간, 간단한 프로그램을 몇 가지 만들고 예시 코드를 올릴 예정이다.
위 사진에서 우측 상단에 있는 투박한 네모 상자가 결과물이다.
더보기
LRESULT CALLBACK M_WndProc(HWND hWnd, UINT iMessage, WPARAM wParam, LPARAM lParam){
HDC hdc;
PAINTSTRUCT ps;
HFONT hFont, cFont;
static char szTime[100];
time_t t;
switch(iMessage){
case WM_CREATE:
SetTimer(hWnd, 1, 1000, NULL);
SendMessage(hWnd, WM_TIMER, 1,0);
hFont = CreateFont( 12,
0,
GM_COMPATIBLE,
0,
FW_DONTCARE,
0, 0, 0,
HANGUL_CHARSET,
OUT_OUTLINE_PRECIS,
CLIP_DEFAULT_PRECIS,
CLEARTYPE_QUALITY,
VARIABLE_PITCH,
TEXT("consolas")
);
return 0;
case WM_TIMER:
RECT crt;
time(&t);
strftime(szTime, 100, TEXT("%H:%M:%S"), localtime(&t));
GetClientRect(hWnd, &crt);
InvalidateRect(hWnd, &crt, TRUE);
return 0;
case WM_PAINT:
hdc = BeginPaint(hWnd, &ps);
cFont = (HFONT)SelectObject(hdc, hFont);
TextOut(hdc, 0,0, szTime, strlen(szTime));
SelectObject(hdc, cFont);
EndPaint(hWnd, &ps);
return 0;
case WM_KEYDOWN:
if(wParam == VK_ESCAPE){
SendMessage(hWnd, WM_CLOSE, 0,0);
}
return 0;
case WM_CLOSE:
if(MessageBox(hWnd, TEXT("Shutdown?"), TEXT("MyClock Prg"), MB_YESNO) == IDYES){
DestroyWindow(hWnd);
}
return 0;
case WM_DESTROY:
KillTimer(hWnd, 1);
DeleteObject(hFont);
PostQuitMessage(0);
return 0;
}
return (DefWindowProc(hWnd, iMessage, wParam, lParam));
}
종료할 땐 Esc키를 눌러 종료한다.
코드 길이에 비해 결과물이 귀엽다는 특징이 있다.
반응형
'컴퓨터 > Windows API' 카테고리의 다른 글
[C/C++] GUI 타이머 프로그램 (1) | 2022.10.15 |
---|---|
[C/C++] 윈도우즈 시계 프로그램2 (0) | 2022.09.26 |
댓글