ファイル名:tokei.dlg

時計のダイアログ
tokei DIALOG 6, 13, 80, 30
STYLE DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
CAPTION "時計"
FONT 12, "System"
BEGIN
END

ファイル名:tokei.rc

#include <windows.h>
#include "tokei.dlg"

ファイル名:tokei.c

#define STRICT
#include <windows.h>
#include <stdio.h>
#include <string.h>
#include <time.h>

#ifdef __cplusplus
extern "C"
#endif
BOOL FAR PASCAL tokei(HWND hDlg, UINT msg, WPARAM wParam, LPARAM lParam){
	PAINTSTRUCT ps;
	HDC hdc;
	HFONT hfont, hfontOld;
	char buf[260];
	time_t t;
	struct tm *ptm;
	LOGFONT lf;

	switch(msg){
	case WM_TIMER:
		InvalidateRect(hDlg, NULL, TRUE);
		break;
	case WM_COMMAND:
		switch((WORD)wParam) {
		case IDCANCEL:		/* システムメニューの「クローズ」 */
			KillTimer(hDlg, 1);
			EndDialog( hDlg, wParam );
			break;
		}
		break;
	case WM_PAINT:
		hdc = BeginPaint(hDlg, &ps);
		hfont=GetStockObject(OEM_FIXED_FONT);/*固定ピッチフォント*/
		hfontOld=SelectObject(hdc, hfont);
		SetTextColor(hdc, RGB(  0,   0,   0)); /*文字色*/
		SetBkColor  (hdc, RGB(255, 255, 255)); /*背景色*/
		//SetBkMode(hdc, OPAQUE);        /*背景色を不透明にする*/
		SetBkMode(hdc, TRANSPARENT);   /*背景色を透明にする*/
		time(&t);
		ptm=localtime(&t);
		sprintf(buf, "%04d 年 %02d 月 %02d 日", ptm->tm_year+1900, ptm->tm_mon+1, ptm->tm_mday);
		TextOut(hdc, 3, 3, buf, strlen(buf));
		sprintf(buf, "%02d : %02d : %02d ", ptm->tm_hour, ptm->tm_min, ptm->tm_sec);
		memset(&lf, 0, sizeof(lf));
		lf.lfHeight=35;
		hfont=CreateFontIndirect(&lf);
		SelectObject(hdc, hfont);
		TextOut(hdc, 3, 30, buf, strlen(buf));
		SelectObject(hdc, hfontOld);
		DeleteObject(hfont);
		EndPaint(hDlg, &ps);
		break;
	case WM_INITDIALOG:
		SetTimer(hDlg, 1, 1000, NULL);
		return TRUE;/* SetFocusしたらfalse */
	default:
		return FALSE;
	}
	return TRUE;
}
int PASCAL WinMain(HINSTANCE hinst, HINSTANCE hprev, LPSTR cmdline, int cmdshow){
	DLGPROC lpProc = (DLGPROC)MakeProcInstance((FARPROC)tokei, hinst);
	DialogBox(hinst, "tokei", NULL, lpProc);
	FreeProcInstance((FARPROC)lpProc);
	return 0;
}

ファイル名:tokei.def

NAME	TOKEI
DESCRIPTION  'TOKEI'
EXETYPE WINDOWS
STUB	    'WINSTUB.EXE'
CODE    PRELOAD MOVEABLE
DATA    MOVEABLE PRELOAD MULTIPLE
HEAPSIZE  4096
STACKSIZE 8192
EXPORTS
	TOKEI  @1
デジタル時計完成!

戻る