这个小工具在自己生活当中能用到,运行软件以后,会显示当前的系统时间,然后你可以设定时间,再选择是定时响铃还是关机。截图如下:

前言:本程序采用visual studio 2010 ,对话框类型的应用程序,生成的类视图如下,右边为CTimeDlg类的本分函数:

主要的实现方法和关键点如下:

1.怎样获得系统时

为CTimeDlg类添加成员变量 CTime m_CurrentTime;

m_CurrentTime=CTime::GetCurrentTime();

然后获得int型的时/分/秒:   m_H=m_CurrentTime.GetHour();

m_M=m_CurrentTime.GetMinute();

m_S=m_CurrentTime.GetSecond();

其中m_H/m_M/m_S是三个编辑框的成员函数。

2.动态显示系统时间

动态显示系统时间需要用到定时器,然后每一秒钟都会发送WM_TIME。还要给CTimeDlg类添加WM_TIME消息处理函数OnTime().

为此首先要建立一个计时器:

SetTimer(1,1000,NULL);   //use here ,after the m_whnd has been created!!!

因为有CWnd::SetTimer(),所以第三个参数是NULL,会由void CTimeDlg::OnTimer(UINT_PTR nIDEvent)经过消息映射来处理。

另外要注意的是在调用SetTimer(1,1000,NULL); 之前必须已经建立了窗口也就是m_hwnd已经被赋值,应为SetTimer(1,1000,NULL)继承于CWnd,必须要有一个对象才能调用,所以我在:BOOL CTimeDlg::OnInitDialog()里面定义了计时器。刚开始自己是在CTimeDlg::CTimeDlg(CWnd* pParent /*=NULL*/)构造函数里定义结果是出现断言错误,因为m_hwnd还未被建立。

3.播放铃声

此版本我没有添加可自定义自己的铃声这个功能,可以告诉大家DirectShow可以实现播放各种格式的音频和视频,如果有需要以后自己会加上这个功能,另外还有最小化到托盘等琐碎功能,(嘿嘿,其实就是很琐碎,不断地调试,不断的查阅MSDN~~)。

使用了播放系统错误警告的函数:MessageBeep(0x00000030L);

4.关机

有好几个函数可以实现系统关机,此处选择的是:

InitiateSystemShutdown(NULL,_T("Attention! Your Computer is going to SHUTDOWN."),5,FALSE,FALSE);

好了主要的点都已经列清楚,对于其中各个函数的意义和参数,大家可以查阅MSDN,详细的就不说了,下面是主要代码:

/主要是编辑框实现DDX动态数据交换

void CTimeDlg::DoDataExchange(CDataExchange* pDX)
{
    CDialogEx::DoDataExchange(pDX);
    DDX_Text(pDX, IDC_EDIT1, m_H);
    DDX_Text(pDX, IDC_EDIT2, m_M);
    DDX_Text(pDX, IDC_EDIT3, m_S);
    DDX_Text(pDX, IDC_EDIT4, m_AP);
    DDX_Text(pDX, IDC_EDIT5, m_SetH);
    DDV_MinMaxInt(pDX, m_SetH, 0, 24);
    DDX_Text(pDX, IDC_EDIT6, m_SetM);
    DDV_MinMaxInt(pDX, m_SetM, 0, 60);
    DDX_Text(pDX, IDC_EDIT7, m_SetS);
    DDV_MinMaxInt(pDX, m_SetS, 0, 60);
}

BEGIN_MESSAGE_MAP(CTimeDlg, CDialogEx)
    ON_WM_SYSCOMMAND()
    ON_WM_PAINT()
    ON_WM_QUERYDRAGICON()
    ON_WM_TIMER()
    ON_EN_CHANGE(IDC_EDIT1, &CTimeDlg::OnEnChangeEdit1)
    ON_EN_CHANGE(IDC_EDIT2, &CTimeDlg::OnEnChangeEdit2)
    ON_EN_CHANGE(IDC_EDIT3, &CTimeDlg::OnEnChangeEdit3)
    ON_EN_CHANGE(IDC_EDIT4, &CTimeDlg::OnEnChangeEdit4)
    ON_EN_CHANGE(IDC_EDIT5, &CTimeDlg::OnEnChangeEdit5)
    ON_EN_CHANGE(IDC_EDIT6, &CTimeDlg::OnEnChangeEdit6)
    ON_EN_CHANGE(IDC_EDIT7, &CTimeDlg::OnEnChangeEdit7)
    ON_BN_CLICKED(IDC_BUTTON1, &CTimeDlg::OnBnClickedButton1)
    ON_BN_CLICKED(IDC_BUTTON2, &CTimeDlg::OnBnClickedButton2)
END_MESSAGE_MAP()

//处理WM_TIME消息的函数

void CTimeDlg::OnTimer(UINT_PTR nIDEvent)
{
    // TODO: Add your message handler code here and/or call default
    if(nIDEvent==1)
    {
        m_CurrentTime=CTime::GetCurrentTime();
        if (m_CurrentTime.GetHour()>12)
        {
            m_H=m_CurrentTime.GetHour()-12;
            m_AP=_T("PM");
        }
        else
        {
            m_H=m_CurrentTime.GetHour();
            m_AP=_T("AM");
        }
        m_M=m_CurrentTime.GetMinute();
        m_S=m_CurrentTime.GetSecond();
        OnEnChangeEdit1();
        OnEnChangeEdit2();
        OnEnChangeEdit3();
        OnEnChangeEdit4();

//function for your choose;
        if ((m_SetH==m_CurrentTime.GetHour())&&(m_SetM==m_M))
        {
            if(m_ChooseFunc==1)
                   MessageBeep(0x00000030L);
            else if(m_ChooseFunc==2)
                  InitiateSystemShutdown(NULL,_T("Attention! Your Computer is going to SHUTDOWN."),5,FALSE,FALSE);
        }
    }

编写一个闹钟和定时关机工具(MFC VS2010)的更多相关文章

  1. 我的定时关机程序(MFC实现) .

    原理: 利用定时器去检查,如输入的是多少分钟后关机,就根据输入的分钟数产生一个COUNT计数器,计数器一直递减,直到1,然后执行关机.如输入的是几时几分关机,那么定时器会每次都检查系统的时间和你输入的 ...

  2. Python Django 编写一个简易的后台管理工具4-添加admin模版

    导入admin后台模版 可以在网上任意搜索模版,我这里也提供一个地址github 拷贝admin后台的html文件至项目的templates文件夹 创建static文件夹,将admin后台的js,im ...

  3. Python Django 编写一个简易的后台管理工具3-运行项目

    编写view页面 def hello(request): return render(request,'hello.html') 编写html页面 <!DOCTYPE html> < ...

  4. Python Django 编写一个简易的后台管理工具1-安装环境

    安装python环境 MAC 一般都会自带 Python2.x版本 的环境,你也可以在链接 https://www.python.org/downloads/mac-osx/ 上下载最新版安装. 安装 ...

  5. Python Django 编写一个简易的后台管理工具2-创建项目

    django-admin 创建项目 pycharm 创建项目

  6. MFC+WinPcap编写一个嗅探器之零(目录)

    零零散散写了三天,完成了编写嗅探器的文章,旨在让自己加深印象,是初学者少走一些弯路.因为先前未接触MFC,之后也不打算精通,完全是0基础,所以文章技术含量不高,但难点基本上都都包括了,凑合这看吧,接下 ...

  7. 尝鲜.net core2.1 ——编写一个global tool

    本文内容参考微软工程师Nate McMaster的博文.NET Core 2.1 Global Tools 用过npm开发都知道,npm包都可以以全局的方式安装,例如安装一个http-server服务 ...

  8. wpf实现一个windows定时关机的工具

    基本界面 起源 在家睡前喜欢用电脑放情景喜剧看,电脑需要定时关机,一开始直接命令行定时关机,感觉有点小麻烦, 于是最近弄了个有界面的 主要功能 在指定的时间之后执行 关机|休眠|重启 的操作, 支持取 ...

  9. MFC入门(二)-- 提取输入框的字符串(定时关机的小程序)

    上篇文章已经让我们有了对于MFC最简单直观的认识,但貌似并无太大的交互性可言,而且其实也没有涉及到数据的交互,所以本文通过做一个时间可以调节的定时关机的Demo来演示. MFC入门(一)地址:http ...

随机推荐

  1. Linux kernel Vhost-net 和 Virtio-net代码详解

    场景 Host上运行qemu kvm虚拟机,其中虚拟机的网卡类型为virtio-net,而Host上virtio-net backend使用vhost-net 数据包进入虚拟机代码分析 首先看vhos ...

  2. perl LWP::UserAgent获取源码与响应

    #!/usr/bin/perl -w use strict; use LWP::UserAgent; my $useragent = new LWP::UserAgent; my $url = 'ht ...

  3. 绿色astah简体中文版6.8

    astah是一个UML建模的好工具,绿化后,现在开始将它汉化. 欢迎大家提出汉化翻译不当的地方,在本帖子留言. 需要汉化的内容较多,我会逐渐发布汉化更完全的版本. 说明:astah6.8需要使用jre ...

  4. PHPMailer实现PHP邮件发送

    1.首先是下载PHPMailer http://code.google.com/a/apache-extras.org/p/phpmailer/ 2.解压 从中取出class.phpmailer.ph ...

  5. Windows下NexusPHP搭建PT站过程

    搭建环境:Win7+XAMPP(5.5) 网站根目录: D:\IT\XAMPP5.5\htdocs\ 1 下载源码程序http://sourceforge.net/projects/nexusphp/ ...

  6. Json-lib用法

    Json-lib用法 1.需要的jar包有一下几个,别的文章中没有xom这个jar包,但我的工程中如果没有这个包,那么,json数据转换为xml数据的程序中在执行XMLSerializer xmlSe ...

  7. sqlalchemy 映射的小例子

    1.多张表映射到一个类 import pandas as pdfrom settings import DATABASESfrom sqlalchemy import create_engineimp ...

  8. 第一百一十四节,JavaScript文档对象,DOM进阶

    JavaScript文档对象,DOM进阶 学习要点: 1.DOM类型 2.DOM扩展 3.DOM操作内容 DOM自身存在很多类型,在DOM基础课程中大部分都有所接触,比如Element类型:表示的是元 ...

  9. iOS开发关于xcode中souceControl的苹果文档翻译(节选)

    Subversion 1.7 provides many benefits: svn1.7版本有以下好处: Improved performance. Increased speed for many ...

  10. 2016 SyScan360 国际前瞻信息安全会议 多角度探讨信息安全

    SyScan360国际前瞻信息安全会议由与中国第一大互联网安全公司-360公司与SyScan前瞻信息安全技术年会(TheSymposiumonSecurityforAsiaNetwork,以下简称Sy ...