gpt4 book ai didi

c++ - 如何使用winapi实现类Steam窗口?

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:25:27 24 4
gpt4 key购买 nike

Steam window这是正在调整大小的 Steam 客户端窗口的屏幕截图。

Steam 的客户端窗口有两个很酷的功能。

  1. 非常灵敏的自定义窗口。
  2. 炫酷的玻璃尺寸调整效果,不同于标准 window (认为这可能是与 1 密切相关的副作用)

假设我想使用 winapi 创建类似的窗口。我该怎么做?

我不问小部件管理相关的东西,而是问技术性的 winapi 技巧。

最佳答案

基本上,您几乎可以用窗口做任何事情。但是大部分技巧都是要手动实现的。

  1. 我不知道什么是“非常敏感”。如果您的意思是窗口没有标准边框,那么很容易实现:在创建WS_POPUP 窗口时不要指定WS_BORDERWS_CAPTION。之后,您必须自己绘制边框和标题。像往常一样处理 WM_ERASEBKGNDWM_PAINT 消息、绘制背景、菜单。
  2. 在我看来,这种效果更像是一个错误。它是这样发生的:窗口被调整大小,它得到一个 WM_SIZE 消息,处理它,Windows 发送一个窗口忽略的 WM_ERASEBKGND 消息。因此,系统在尚未填充新窗口图像的新窗口框架周围绘制新阴影。在这里我们得到了这个很酷的玻璃效果:带有 window 空气阴影的底层 window 的旧图像。您可以尝试禁用窗口阴影并查看此效果。

为了创建自定义调整大小的边框,您可能会发现这些函数很有用:LoadCursorSetCursorMoveWindow

为了绘制自定义边框,您可以使用标准 GDI 函数。您还可以创建一些子窗口并将绘图委托(delegate)给它们。这是 winapi 的基础。

关于c++ - 如何使用winapi实现类Steam窗口?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15313403/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com