vc下时钟实现

 

前面写了两个小程序,没有说明原理(逻辑关系):这里一并说明。

1.首先我们得理解消息机制,也就是应用程序在和操作系统交互的时候(为什么是操作系统而不是用户,其实是一个意思,因为用户的数据需要先经过操作系统),应用程序所处的状态,一共有五种,1.阻塞,2.不阻塞,3.select即阻塞于select是介于1和2之间的实现,4.信号或者说消息,5.类信号机制。消息机制原理和中断系统原理一样,系统不需要轮询应用程序,用户需要注册回调函数(类似于中断处理函数),然后应用程序该干嘛就干嘛。当应用程序声明的事件(中断产生)产生,操作系统会自动调用回调函数。

2.句柄,windows系统中用来唯一标识一个对象,或者一个程序的多个实例的整型数值。就像linux里面用PID标识一样。用于对对象的操作。

时钟实现,是用户设置定时器事件和定时器回调函数,回调函数里处理系统时间即可。

代码如下:

View Code
 1 #include "stdafx.h"
 2 #include <windows.h>
 3 #include <windowsx.h>
 4 #include "resource.h"
 5 #include "MainDlg.h"
 6 
 7 
 8 BOOL WINAPI Main_Proc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
 9 {
10     switch(uMsg)
11     {
12         HANDLE_MSG(hWnd, WM_INITDIALOG, Main_OnInitDialog);
13         HANDLE_MSG(hWnd, WM_COMMAND, Main_OnCommand);
14         HANDLE_MSG(hWnd,WM_CLOSE, Main_OnClose);
15     }
16 
17 
18     return FALSE;
19 }
20 
21 VOID CALLBACK mytimerproc (
22 HWND hwnd, UINT message, UINT iTimerID, DWORD dwTime)
23 {
24     SYSTEMTIME stlocal;
25     GetLocalTime(&stlocal);//取系统时间
26     TCHAR strtime[256];
27     wsprintf(strtime,"%i年%i月%i日  %i:%i:%i",stlocal.wYear,stlocal.wMonth,stlocal.wDay,stlocal.wHour,stlocal.wMinute,stlocal.wSecond);
28     SetDlgItemText(hwnd,IDC_EDIT1,strtime);
29     //SendMessage(hwnd, WM_SYSCOMMAND, SC_MONITORPOWER, 2);//close monitor
30     //SendMessage(hwnd, WM_SYSCOMMAND, SC_MONITORPOWER, -1);//open  monitor
31 
32 
33 
34 
35 
36 }
37 
38 
39 
40 BOOL Main_OnInitDialog(HWND hwnd, HWND hwndFocus, LPARAM lParam)
41 {
42     SetTimer(hwnd,0,1000,mytimerproc);
43     return TRUE;
44 }
45 
46 void Main_OnCommand(HWND hwnd, int id, HWND hwndCtl, UINT codeNotify)
47 {
48     switch(id)
49     {
50         case IDC_OK:
51         {
52         
53         }
54         break;
55         default:
56         break;
57     }
58 }
59 
60 void Main_OnClose(HWND hwnd)
61 {
62     EndDialog(hwnd, 0);
63 }

运行结果:

转载于:https://www.cnblogs.com/liuweilinlin/archive/2012/06/24/2560411.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值