[英]Is there a way of changing the style of a Windows 10 win32 / gdi++ GUI program into Windows 95?
Windows 95 主题:
Windows 10 主题:
Windows 95 主题外观绝对适合我的程序。 有没有办法使用编写程序的 Win32 API 和 GDI+ 来做到这一点?
您可以使用SetWindowTheme function
Properties->Linker->Input->Additional Dependencies
中添加对 uxtheme.lib 的依赖。 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 Styles
和What'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.