C++代码:在运行窗口右上角输出时间
时间: 2024-10-18 10:12:55 浏览: 15
在C++程序中,在控制台应用程序中通常不会直接在右上角显示时间,因为控制台窗口本身并不支持那样的布局。然而,如果你正在创建一个Windows GUI应用,可以使用Windows API或者一些库如`QTime`(Qt)、`chrono`等来实现在窗口标题栏或者其他合适的地方显示时间。
以下是一个简单的例子,使用Windows API在创建的消息循环中更新窗口标题的时间:
```cpp
#include <windows.h>
#include <iostream>
LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam) {
static std::time_t lastUpdateTime = time(nullptr);
switch (message) {
case WM_PAINT: {
PAINTSTRUCT ps;
HDC hdc = BeginPaint(hWnd, &ps);
// 获取当前时间和格式化字符串
auto currentTime = time(nullptr);
char buffer[64];
_stprintf_s(buffer, sizeof(buffer), "%d-%02d-%02d %02d:%02d:%02d",
currentTime / (3600 * 24), currentTime % (3600 * 24) / 3600,
currentTime % 3600 / 60, currentTime % 60);
// 绘制到HDC
HFONT oldFont = SelectObject(hdc, GetStockObject(DEFAULT_GUI_FONT));
DrawText(hdc, buffer, -1, &RECT{0, 0, 200, 15}, DT_SINGLELINE | DT_CENTER | DT_NOCLIP);
SelectObject(hdc, oldFont);
EndPaint(hWnd, &ps);
break;
}
// ... 其他窗口消息处理...
}
return DefWindowProc(hWnd, message, wParam, lParam);
}
int main() {
// 创建窗口和消息循环
WNDCLASS wc = {0};
wc.lpfnWndProc = WndProc;
wc.lpszClassName = L"MyWindowClass";
RegisterClass(&wc);
HWND hWnd = CreateWindow(wc.lpszClassName, L"Right Upper Corner Time Example",
WS_OVERLAPPEDWINDOW, CW_USEDEFAULT, CW_USEDEFAULT, 200, 20, NULL, NULL, hInstance, NULL);
ShowWindow(hWnd, SW_SHOW);
UpdateWindow(hWnd); // 首次立即更新窗口
MSG msg;
while (GetMessage(&msg, NULL, 0, 0)) {
TranslateMessage(&msg);
DispatchMessage(&msg);
}
return 0;
}
阅读全文