【发布时间】:2012-05-04 09:51:54
【问题描述】:
我无法理解 UpdateLayaredWindow api 的概念、它的工作原理以及如何实现它。例如,我想覆盖 CFrameWnd 并使用 UpdateLayeredWindow 绘制一个自定义的 alpha 混合框架,据我了解,绘制子控件的唯一方法是:将它们混合到框架的位图缓冲区(使用 CreateCompatibleBitmap 创建)并重绘整个框架,或者创建另一个位于分层框架顶部并定期绘制子控件的窗口(这违背了分层窗口的整个想法,因为窗口区域无论如何都不会更新)。
如果我使用第一种方法,整个框架会被重绘——这对于大型应用程序来说肯定是不切实际的..?还是帧总是不断更新,所以修改位图缓冲区不会导致额外的重绘。
一个类似于我想要实现的窗口示例是 Skype 通知框/来电框。一个半透明的框架/窗口,顶部有子控件,您可以在屏幕上移动。
在实际的商业世界中,我该怎么做?请不要让我参考文档,我知道它在说什么;我需要有人解释我应该用来实现它的基础设施的实用方法。
谢谢。
【问题讨论】:
-
在实际的商业世界中,您永远不会重新实现标准窗框。这是完全没有意义的,并且会大大增加您在实现中出现错误的可能性。
-
我没有重新实现它的功能,我只是根据我得到的设计绘制一个自定义框架。在实际的商业世界中,如果我无法在设计方面交付客户想要的东西,我就不会得到报酬