资源简介
C语言 课程设计 模拟时钟转动程序 及其代码

代码片段和文件信息
#include
#include
#define TWOPI (2*3.14159)
#define IDTIMER 1
#define ANGLE TWOPI/360
LRESULT CALLBACK WindowProc(HWND hwndUINT uMsg WPARAM wParamLPARAM lParam );
int WINAPI WinMain(HINSTANCE hInstanceHINSTANCE hPrevInstance LPSTR lpCmdLineint nCmdShow )
{
TCHAR szClassName[] = TEXT(“analogCloc“);
MSG msg;
HWND hwnd;
WNDCLASS wndclass;
wndclass.cbClsExtra = 0;
wndclass.cbWndExtra = 0;
wndclass.hbrBackground = (HBRUSH)::GetStockobject(WHITE_BRUSH);
wndclass.hCursor = NULL;
wndclass.hIcon = NULL;
wndclass.hInstance = hInstance;
wndclass.lpfnWndProc = WindowProc;
wndclass.lpszClassName = szClassName;
wndclass.lpszMenuName = NULL;
wndclass.style = CS_HREDRAW | CS_VREDRAW ;
RegisterClass(&wndclass);
hwnd = CreateWindow(szClassNameTEXT(“Clock“)WS_OVERLAPPEDWINDOW
CW_USEDEFAULTCW_USEDEFAULT
CW_USEDEFAULTCW_USEDEFAULT
NULL NULL hInstance NULL);
ShowWindow(hwndnCmdShow);
UpdateWindow(hwnd);
while(GetMessage(&msgNULL00))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
return msg.wParam;
}
void setISOTROPIC(HDC hdcint cxClientint cyClient)//设置映射模式使之成为笛卡尔坐标系的映射模式
{
SetMapMode(hdcMM_ISOTROPIC);
SetWindowExtEx(hdc10001000NULL); // 逻辑单位与设备单位比1/2
SetViewportExtEx(hdccxClient/2-cyClient/2NULL);
SetViewportOrgEx(hdccxClient/2cyClient/2NULL); // 竖坐标向上为正,下为负
}
void drawClock(HDC hdc)
{
int x y radius;
Selectobject(hdcCreateSolidBrush(RGB(1148138)));
for(int i=0;i<360;i+=6)
{
x = (int)(cos(TWOPI/360*i)*900);
y = (int)(sin(TWOPI/360*i)*900);
radius = !(i%5)?40:10;
Ellipse(hdcx-radiusy-radiusx+radiusy+radius);
}
}
void drawHands(HDC hdcSYSTEMTIME *pstBOOL hChange)
{
int radius[3] = {500700850};
int angle[3];
angle[0] = pst->wHour*30+pst->wMinute/12*6;
angle[1] = pst->wMinute*6;
angle[2] = pst->wSecond*6;
for(int i=hChange?0:2;i<3;i++)
{
MoveToEx(hdc00NULL);
LineTo(hdc(int)(radius[i]*cos(ANGLE*(90-angle[i])))
(int)(radius[i]*sin(ANGLE*(90-angle[i]))));
}
}
LRESULT CALLBACK WindowProc(
HWND hwnd
UINT message
WPARAM wParam
LPARAM lParam
)
{
TCHAR time[40];
PAINTSTRUCT ps;
HDC hdc;
static int cxClient cyClient;
SYSTEMTIME st;
static SYSTEMTIME preSt;
BOOL hChange;
switch(message)
{
case WM_CREATE:
::SetTimer(hwndIDTIMER1000NULL);
::GetLocalTime(&st);
wsprintf(timeTEXT(“%d年%d月%d日%d时%d分%d秒“)
st.wYear
st.wMonth
st.wDay
st.wHour
st.wMinute
st.wSecond);
SetWindowText(hwndtime);
preSt = st;
return 0;
case WM_SIZE:
cxClient = LOWORD(lParam);
cyClient = HIWORD(lParam);
return 0;
case WM_TIMER:
::GetLocalTime(&st); //每次都要获取当前时间
hChange = st.wHour!=preSt.wHour||st.wMinute!=preSt.wMinute;
hdc = GetDC(hwnd);
setISOTROPIC(hdccxClientcyClient);
::Selectobject(hdc::GetStockobject(
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
目录 0 2011-12-29 18:07 新建文件夹\
文件 3844 2011-06-15 22:04 新建文件夹\模拟时钟.cpp
文件 180280 2011-06-15 22:04 新建文件夹\模拟时钟.exe
- 上一篇:C语言最小二乘法多项式拟合
- 下一篇:C/C++快件管理系统
相关资源
- 操作系统c语言模拟文件管理系统844
- C语言开发实战宝典
- C++中头文件与源文件的作用详解
- C语言代码高亮html输出工具
- 猜数字游戏 c语言代码
- C语言课程设计
- 数字电位器C语言程序
- CCS FFT c语言算法
- 使用C语言编写的病房管理系统
- 通信过程中的RS编译码程序(c语言)
- 计算机二级C语言上机填空,改错,编
- 用回溯法解决八皇后问题C语言实现
- 简易教务管理系统c语言开发文档
- 操作系统课设 读写者问题 c语言实现
- 小波变换算法 c语言版
- C流程图生成器,用C语言代码 生成C语
- 3des加密算法C语言实现
- 简单的C语言点对点聊天程序
- 单片机c语言源程序(51定时器 八个按
- 个人日常财务管理系统(C语言)
- c语言电子商务系统
- 小甲鱼C语言课件 源代码
- 将图片转换为C语言数组的程序
- C语言实现的一个内存泄漏检测程序
- DES加密算法C语言实现
- LINUX下命令行界面的C语言细胞游戏
- 用单片机控制蜂鸣器播放旋律程序(
- 学校超市选址问题(数据结构C语言版
- 电子时钟 有C语言程序,PROTEUS仿真图
- 尚观培训linux许巍老师关于c语言的课
评论
共有 条评论