开发最轻量级的Windows桌面时钟
学习笔记作者:admin日期:2025-05-27点击:31
摘要:使用C/C++和Win32 API开发一个无依赖、资源占用极低的Windows桌面时钟,并提供了完整的Visual Studio项目模板。
开发最轻量级的Windows桌面时钟
问题描述
用户希望开发一个最轻量级的Windows桌面时钟,要求无依赖、资源占用极低。
解决方案
推荐使用C/C++结合Win32 API进行开发,最终生成了一个独立的EXE文件。
实现步骤
- 使用Win32 API编写主程序逻辑。
- 创建一个Visual Studio项目,并添加主程序代码。
- 设置编译参数为Windows子系统。
- 生成的工程文件包括SimpleClock.sln、SimpleClock/目录下的SimpleClock.cpp和SimpleClock.vcxproj。
最终效果
运行后会显示一个窗口,实时更新当前时间。
完整代码示例
#include <windows.h>
#include <time.h>
const char CLASS_NAME[] = "SimpleClockWindowClass";
LRESULT CALLBACK WindowProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam) {
static HWND hLabel;
switch (uMsg) {
case WM_CREATE:
hLabel = CreateWindow("STATIC", "",
WS_VISIBLE | WS_CHILD | SS_CENTER,
50, 30, 150, 30,
hwnd, NULL, NULL, NULL);
SetTimer(hwnd, 1, 1000, NULL);
break;
case WM_TIMER: {
time_t now = time(0);
struct tm ltm;
localtime_s(<ltm, &now);
char buffer[32];
strftime(buffer, sizeof(buffer), "%H:%M:%S", <ltm);
SetWindowText(hLabel, buffer);
break;
}
case WM_DESTROY:
KillTimer(hwnd, 1);
PostQuitMessage(0);
break;
default:
return DefWindowProc(hwnd, uMsg, wParam, lParam);
}
return 0;
}
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow) {
WNDCLASS wc = {};
wc.lpfnWndProc = WindowProc;
wc.hInstance = hInstance;
wc.lpszClassName = CLASS_NAME;
wc.hbrBackground = (HBRUSH)(COLOR_WINDOW + 1);
wc.hCursor = LoadCursor(NULL, IDC_ARROW);
RegisterClass(&wc);
HWND hwnd = CreateWindowEx(
0,
CLASS_NAME,
"Simple Clock",
WS_OVERLAPPEDWINDOW,
CW_USEDEFAULT, CW_USEDEFAULT, 250, 150,
NULL,
NULL,
hInstance,
NULL
);
if (!hwnd)
return 0;
ShowWindow(hwnd, nCmdShow);
MSG msg = {};
while (GetMessage(&msg, NULL, 0, 0)) {
TranslateMessage(&msg);
DispatchMessage(&msg);
}
return 0;
}
关键词
轻量级, Win32 API, C++, Visual Studio, 时钟