控件–SysDateTimePick32-WindowsAPI论坛-WindowsAPI-津桥芝士平台

控件–SysDateTimePick32

使用WindowsAPI,创建SysDateTimePick32控件:

#include <windows.h>
#include <commctrl.h>
#pragma comment(lib, "comctl32.lib")

#define ID_DATETIMEPICK 101

LRESULT CALLBACK WindowProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam) 
{
    static HWND hDateTimePick;
    switch (uMsg) 
    {
    case WM_CREATE: 
    {
        // 创建日期时间选择控件
         hDateTimePick = CreateWindowEx(0, DATETIMEPICK_CLASS, NULL,
            WS_VISIBLE | WS_CHILD |  DTS_SHORTDATECENTURYFORMAT,
            10, 10, 300, 40, hwnd, (HMENU)ID_DATETIMEPICK, ((LPCREATESTRUCT)lParam)->hInstance, NULL);
        DateTime_SetFormat(hDateTimePick, L"yyy-MM-d HH:mm:ss");

        SetTimer(hwnd, 1, 1000, NULL);  // 10毫秒触发一次
        // 设置当前日期
        SYSTEMTIME st;
        GetLocalTime(&st);
        SendMessage(hDateTimePick, DTM_SETSYSTEMTIME, GDT_VALID, (LPARAM)&st);
        break;
    }
    case WM_TIMER:
        if (wParam == 1)
        {
            SYSTEMTIME st;
            GetLocalTime(&st);
            SendMessage(hDateTimePick, DTM_SETSYSTEMTIME, GDT_VALID, (LPARAM)&st);
        }
        break;

    case WM_DESTROY:
        PostQuitMessage(0);
        break;

    default:
        return DefWindowProc(hwnd, uMsg, wParam, lParam);
    }
    return 0;
}
int WINAPI wWinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPWSTR lpCmdLine, int nCmdShow)
{
    // 初始化Common Controls
    INITCOMMONCONTROLSEX icex;
    icex.dwSize = sizeof(icex);
    icex.dwICC = ICC_DATE_CLASSES;
    InitCommonControlsEx(&icex);

    // 创建窗口类
    WNDCLASS wc = {};
    wc.lpfnWndProc = WindowProc;
    wc.hInstance = hInstance;
    wc.lpszClassName = L"DateTimePickerExample";
    RegisterClass(&wc);

    // 创建窗口
    HWND hwnd = CreateWindowEx(0, L"DateTimePickerExample", L"DateTimePicker Example",
        WS_OVERLAPPEDWINDOW | WS_VISIBLE,
        CW_USEDEFAULT, CW_USEDEFAULT, 400, 400,
        NULL, NULL, hInstance, NULL);

    // 消息循环
    MSG msg;
    while (GetMessage(&msg, NULL, 0, 0)) 
    {
        TranslateMessage(&msg);
        DispatchMessage(&msg);
    }

    return 0;
}

效果图:

image

 

请登录后发表评论

    没有回复内容