用C++制作一个简单的电子时钟

准备工作

首先,我们需要安装一个C++编译器。在这个例子中,我将使用Microsoft Visual Studio。如果你还没有安装,请访问Visual Studio官网下载并安装。

接下来,打开Visual Studio并创建一个新的控制台应用程序项目。然后,在代码编辑器中粘贴以下代码:

#include <windows.h>
#include <iostream>
#include <chrono>
#include <ctime>
#include <thread>

int main() {
    HWND console = GetConsoleWindow();
    SetLayeredWindowAttributes(console, 0, 150, LWA_ALPHA);

    while (true) {
        // 清空控制台窗口
        system("cls");

        // 获取当前系统时间
        auto now = std::chrono::system_clock::now();
        std::time_t now_c = std::chrono::system_clock::to_time_t(now);

        // 将时间转换为本地时间
        std::tm localNow;
        localtime_s(&localNow, &now_c);

        // 输出年、月、日、时、分、秒
        std::cout << "可以按F11在ctrl+鼠标滚轮全屏放大" << std::endl;
        std::cout << "当前时间:"
            << localNow.tm_year + 1900 << "年"
            << localNow.tm_mon + 1 << "月"
            << localNow.tm_mday << "日 "
            << localNow.tm_hour << "时"
            << localNow.tm_min << "分"
            << localNow.tm_sec << "秒" << std::endl;

        // 每秒刷新
        std::this_thread::sleep_for(std::chrono::seconds(1));
    }

    return 0;
}

程序分析

引入头文件

#include <windows.h>
#include <iostream>
#include <chrono>
#include <ctime>
#include <thread>

这些头文件包含了我们在编写电子时

钟程序中需要使用的函数和类。windows.h头文件包含了Windows API的函数,我们将使用它来获取控制台窗口句柄并设置窗口属性。iostreamchronoctimethread头文件是C++标准库的一部分,我们将使用它们来输出时间和处理时间。

获取控制台窗口句柄

HWND console = GetConsoleWindow();

GetConsoleWindow()函数用于获取当前控制台窗口的句柄。我们将在后续代码中使用这个句柄来设置控制台窗口的透明度。

设置控制台窗口的透明度

SetLayeredWindowAttributes(console, 0, 150, LWA_ALPHA);

SetLayeredWindowAttributes()函数用于设置指定窗口的层状窗口属性。在这个例子中,我们使用了LWA_ALPHA标志来设置窗口的透明度。参数150表示窗口的不透明度百分比(介于0到255之间)。

主循环

while (true) {
    // 清空控制台窗口
    system("cls");

    // 获取当前系统时间
    auto now = std::chrono::system_clock::now();
    std::time_t now_c = std::chrono::system_clock::to_time_t(now);

    // 将时间转换为本地时间
    std::tm localNow;
    localtime_s(&localNow, &now_c);

    // 输出年、月、日、时、分、秒
    std::cout << "可以按F11在ctrl+鼠标滚轮全屏放大" << std::endl;
    std::cout << "当前时间:"
        << localNow.tm_year + 1900 << "年"
        << localNow.tm_mon + 1 << "月"
        << localNow.tm_mday << "日 "
        << localNow.tm_hour << "时"
        << localNow.tm_min << "分"
        << localNow.tm_sec << "秒" << std::endl;

    // 每秒刷新
    std::this_thread::sleep_for(std::chrono::seconds(1));
}

这段代码是一个无限循环,它将不断更新显示的时间。首先,我们调用system("cls")清空控制台窗口,以便我们可以重新绘制时钟。

接下来,我们使用std::chrono::system_clock::now()函数获取当前系统时间,并将其转换为std::time_t类型。然后,我们使用localtime_s()函数将时间从UTC转换为本地时间。

最后,我们输出当前的年、月、日、时、分、秒,并暂停一秒以便下一次更新。

运行电子时钟

现在,你已经了解了这段代码的工作原理。让我们运行一下这个电子时钟程序,看看它是如何工作的。

打开Visual Studio,确保你的代码正确地粘贴到了编辑器中。然后,点击工具栏上的“开始调试”按钮(或按F5键),这将编译并运行你的程序。

你应该看到控制台上显示出了当前的时间和日期,而且每秒都会自动更新。你可以通过调整代码中的150参数来改变控制台窗口的透明度。

这就是一个简单的C++电子时钟程序,如果你有任何问题或想法,请随时留言分享。

  • 10
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值