有没有一种方法可以将Windows 10 win32 / gdi ++ GUI程序的样式更改为Windows 95?

问题描述

Windows 95主题

windows 95 notepad

Windows 10主题

windows 10 notepad

Windows 95主题外观绝对适合我的程序。是否可以使用编写程序的Win32 API和GDI +来做到这一点?

解决方法

您可以使用SetWindowTheme功能

  1. 包括
  2. Properties->Linker->Input->Additional Dependencies中将依赖项添加到uxtheme.lib。 enter image description here
  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,600,NULL,hInstance,NULL);



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

输出:

enter image description here

编辑:

您可以参考Visual Styles,也可以参考What's New

通过Windows 7,视觉样式默认情况下处于启用状态,但用户可以通过选择Windows经典主题或关闭主题服务来将其关闭。禁用视觉样式时,所有UI均具有经典外观,并且大多数视觉样式API均不可用。 Windows 7保留了视觉样式关闭模式,以支持各种高对比度主题以及Windows Classic主题。如果要在同一应用程序中同时支持视觉样式和高对比度主题,则通常需要维护两个单独的代码路径以用于呈现控件。

如果您想enable visual styles