zoukankan      html  css  js  c++  java
  • 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 }

    运行结果:

    一切源于对计算机的热爱
  • 相关阅读:
    BZOJ3498PA2009 Cakes——三元环
    黑科技之三元环讲解
    BZOJ4317Atm的树&BZOJ2051A Problem For Fun&BZOJ2117[2010国家集训队]Crash的旅游计划——二分答案+动态点分治(点分树套线段树/点分树+vector)
    BZOJ2463[中山市选2009]谁能赢呢?——博弈论
    BZOJ2275[Coci2010]HRPA——斐波那契博弈
    BZOJ2281[Sdoi2011]黑白棋&BZOJ4550小奇的博弈——DP+nimk游戏
    BZOJ3435[Wc2014]紫荆花之恋——动态点分治(替罪羊式点分树套替罪羊树)
    Trie树学习总结
    kmp学习小结
    Hash学习小结
  • 原文地址:https://www.cnblogs.com/liuweilinlin/p/2560411.html
Copyright © 2011-2022 走看看