Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/58.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 如何使用winapi实现类似Steam的窗口?_C++_C_Winapi_Resize_Steam - Fatal编程技术网

C++ 如何使用winapi实现类似Steam的窗口?

C++ 如何使用winapi实现类似Steam的窗口?,c++,c,winapi,resize,steam,C++,C,Winapi,Resize,Steam,这是Steam客户端窗口正在调整大小的屏幕截图 Steam的客户端窗口有两个很酷的特性 定制窗口,响应速度非常快 冷玻璃调整大小效果,与标准窗口不同(认为这可能是与1密切相关的副作用) 假设我想使用winapi创建类似的窗口。我怎么做 我不是问小部件管理相关的东西,而是问winapi的技术技巧。基本上,你可以用你的窗口做任何事情。但是大多数技巧都是手动实现的。 我不知道什么是“非常敏感的”。如果您的意思是窗口没有标准边框,那么很容易实现:在创建WS\u弹出窗口时,不要指定WS\u边框和WS\u标

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

Steam的客户端窗口有两个很酷的特性

  • 定制窗口,响应速度非常快
  • 冷玻璃调整大小效果,与标准窗口不同(认为这可能是与1密切相关的副作用)
  • 假设我想使用winapi创建类似的窗口。我怎么做


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

    基本上,你可以用你的窗口做任何事情。但是大多数技巧都是手动实现的。

  • 我不知道什么是“非常敏感的”。如果您的意思是窗口没有标准边框,那么很容易实现:在创建
    WS\u弹出窗口时,不要指定
    WS\u边框
    WS\u标题
    。之后,你必须自己画一个边框和一个标题。像往常一样处理
    WM_ERASEBKGND
    WM_PAINT
    消息、绘制背景、菜单
  • 在我看来,这种效果更像是一种虫子。它是这样发生的:窗口被调整大小,它得到一条
    WM_SIZE
    消息,并对其进行处理,Windows发送一条
    WM_ERASEBKGND
    消息,窗口忽略该消息。因此,系统在新窗口框架周围绘制一个新阴影,该阴影尚未填充新窗口图像。在这里,我们得到了一个很酷的玻璃效果:一个带有窗户空气动力学阴影的背景窗户的旧图像。您可以尝试禁用windows阴影并查看此效果
  • 为了创建自定义大小边框,您可能会发现以下函数很有用:
    LoadCursor
    SetCursor
    MoveWindow

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