准备工作
首先,我们需要安装一个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的函数,我们将使用它来获取控制台窗口句柄并设置窗口属性。iostream
、chrono
、ctime
和thread
头文件是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++电子时钟程序,如果你有任何问题或想法,请随时留言分享。