繁体   English   中英

有没有办法将 Windows 10 win32 / gdi++ GUI 程序的样式更改为 Windows 95?

[英]Is there a way of changing the style of a Windows 10 win32 / gdi++ GUI program into Windows 95?

Windows 95 主题:windows 95 记事本

Windows 10 主题:Windows 10 记事本

Windows 95 主题外观绝对适合我的程序。 有没有办法使用编写程序的 Win32 API 和 GDI+ 来做到这一点?

您可以使用SetWindowTheme function

  1. 包括 <Uxtheme.h>
  2. Properties->Linker->Input->Additional Dependencies中添加对 uxtheme.lib 的依赖。 在此处输入图像描述
  3. 调用SetWindowTheme(hwnd, L" ", L" "); 创建 window 之后。

这是示例:

#include <windows.h>
#include <Uxtheme.h>
LPCWSTR g_szClassName = L"myWindowClass";
LRESULT CALLBACK WndProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam)
{
    switch (msg)
    {
    case WM_CLOSE:
        DestroyWindow(hwnd);
        break;
    case WM_DESTROY:
        PostQuitMessage(0);
        break;
    default:
        return DefWindowProc(hwnd, msg, wParam, lParam);
    }
    return 0;
}

int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance,
    LPSTR lpCmdLine, int nCmdShow)
{
    WNDCLASSEX wc;
    HWND hwnd;
    MSG Msg;

    wc.cbSize = sizeof(WNDCLASSEX);
    wc.style = 0;
    wc.lpfnWndProc = WndProc;
    wc.cbClsExtra = 0;
    wc.cbWndExtra = 0;
    wc.hInstance = hInstance;
    wc.hIcon = LoadIcon(NULL, IDI_APPLICATION);
    wc.hCursor = LoadCursor(NULL, IDC_ARROW);
    wc.hbrBackground = (HBRUSH)(COLOR_WINDOW + 1);
    wc.lpszMenuName = NULL;
    wc.lpszClassName = g_szClassName;
    wc.hIconSm = LoadIcon(NULL, IDI_APPLICATION);

    if (!RegisterClassEx(&wc))
    {
        MessageBox(NULL, L"Window Registration Failed!", L"Error!",
            MB_ICONEXCLAMATION | MB_OK);
        return 0;
    }

    hwnd = CreateWindow(
        g_szClassName,
        L"The title of my window",
        WS_OVERLAPPEDWINDOW,
        CW_USEDEFAULT, CW_USEDEFAULT, 600, 600,
        NULL, NULL, hInstance, NULL);



    ShowWindow(hwnd, nCmdShow);
    UpdateWindow(hwnd);
    SetWindowTheme(hwnd, L"", L"");
    while (GetMessage(&Msg, NULL, 0, 0) > 0)
    {
        TranslateMessage(&Msg);
        DispatchMessage(&Msg);
    }
    return Msg.wParam;
}

OutPut:

在此处输入图像描述

编辑:

您可以参考Visual StylesWhat's New

通过 Windows 7,视觉 styles 默认开启,但用户可以通过选择 Windows 经典主题或关闭主题服务来关闭它们。 当 Visual styles 关闭时,所有 UI 都将获得经典外观,并且大多数 Visual styles API 不可用。 Visual styles off 模式一直保留到 Windows 7 以支持各种高对比度主题,以及 Windows Classic 主题。 如果您想在同一应用程序中同时支持视觉 styles 和高对比度主题,您通常需要维护两个单独的代码路径来呈现控件。

如果你想启用可视 styles

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM