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

问题描述 投票:0回答:1

Windows 95 主题: windows 95 notepad

Windows 10 主题: windows 10 notepad

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

c++ windows winapi visual-c++ gdi+
1个回答
1
投票

您可以使用SetWindowTheme功能

  1. 包括
  2. Properties->Linker->Input->Additional Dependencies
    中添加对uxtheme.lib的依赖。
  3. 创建窗口后调用
    SetWindowTheme(hwnd, L" ", L" ");

这是示例:

#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;
}

输出:

编辑:

您可以参考

Visual Styles
,以及
What's New
中:

在 Windows 7 中,默认情况下视觉样式处于打开状态,但用户可以通过选择 Windows 经典主题或关闭主题服务来关闭它们。当视觉样式关闭时,所有 UI 都会获得经典外观,并且大多数视觉样式 API 不可用。 Windows 7 保留了视觉样式关闭模式,以支持各种高对比度主题以及 Windows 经典主题。如果您想在同一应用程序中同时支持视觉样式和高对比度主题,通常需要维护两个单独的代码路径来渲染控件。

如果您想启用视觉样式

© www.soinside.com 2019 - 2024. All rights reserved.