资源简介
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语言最小二乘法多项式拟合
- C语言FIR滤波器
- c语言课程设计之网络购物系统
- 大津法C语言实现方法
- 算术编码C语言程序编码解码,非自适
- 用C语言实现文件的模糊查找.pdf
- C语言中文分词源代码
- C语言大作业 菜单驱动的学生成绩管理
- apriori算法的c语言实现
- 编译原理课程设计广工C语言
- websocket编程C语言源码
- C语言解析IP数据包程序
- SHA HMAC 和SHA3基于Keccak加密算法测试代
- 霍夫曼编码的C语言实现
- 实验室设备管理系统c++代码
- dos图形界面例程c语言
- c语言万年历的课程设计及源码
- C语言 机房收费管理系统
- 基于C语言实现的贪吃蛇
- c语言 课程设计 井字棋
- SED1520 C语言驱动程序
- 高速公路收费系统C语言课程设计报告
- C语言设计散列表实现电话号码查找系
- 纯C语言写的hex转bin小工具
- linux c语言写的坦克大战小游戏
- 人工势场法路径规划c语言程序
- 安全哈希算法(sha1)c语言实现,包括
- 标准遗传算法c语言程序
- 超级玛丽c语言源代码
- 三次样条插值的C语言实现
评论
共有 条评论