• 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 }

    运行结果:

    一切源于对计算机的热爱
  • 相关阅读:
    Linux常用基本命令:三剑客命令之-awk数组用法
    Linux常用基本命令:三剑客命令之-awk动作用法(1)
    Linux常用基本命令:三剑客命令之-awk模式用法(2)
    Linux常用基本命令:三剑客命令之-awk模式用法(1)
    Linux常用基本命令:三剑客命令之-awk格式化动作
    Linux常用基本命令:三剑客命令之-awk内置变量与自定义变量
    Linux常用基本命令:三剑客命令之-awk输入输出分隔符
    Linux常用基本命令:三剑客命令之-awk基础用法
    Linux环境变量详解与应用
    在js中怎么判断两个字符串相等
  • 原文地址:https://www.cnblogs.com/liuweilinlin/p/2560411.html
Copyright © 2020-2023  润新知