用于在所有Win32程序员的Windows Aero Glass(DWM,GDI,GDI +)上绘图的文档和API示例

时间:2010-09-29 14:31:09

标签: windows delphi visual-c++ windows-7 aero-glass

我正在寻找学习使用Win32 / GDI API的好资源,或者使用Win32 API直接绘制和绘制到玻璃表格的任何内容。

当我使用Delphi时,我将其标记为Delphi或Visual C ++。您可以找到任何代码示例和文章,我们将不胜感激。 MSDN文章似乎没有写到这一点。

作为目标,让我们想象你想要: (a)重现Google Chrome的功能(标签作为玻璃框架的一部分) (b)重现MS Office 2010的功能(将MFC for VS 2010中的玻璃框保存按钮保存为“快速访问工具栏”(见下图)。

我没有使用MFC,但如果检查MFC源是一个很好的信息来源,我很想知道在MFC源或BCG原始源(我有两者)中的哪些地方实现了快速访问工具栏渲染/绘画代码。

alt text

更新:以下答案之一的相关neato链接显示了NC(非客户端)Paint消息,以及如何在玻璃框架上绘制时处理它,以及有关它的MSDN文章here

5 个答案:

答案 0 :(得分:20)

这是我的“Glass”书签文件夹的一个子集,是对该主题进行研究/搜索的批次的结果。我发现所有这些对于学习玻璃和解决各种问题都很有用。其中大部分包括Delphi代码,但我已经注意到它用于另一种语言。

普通玻璃链接

  • Using translucent windows with Delphi:在Delphi表格中使用Glass的好介绍(从非常基础)
  • Custom drawing on glass:介绍如何在窗口的玻璃区域上绘制位图或其他图像。也包括alpha通道等,良好的概述
  • Using glass in a VC++ project:包括打开玻璃,绘制文本,处理通知等 - 这是一个很好的一般性介绍。很多底层细节都是由VCL处理的(例如GlassFrame property和TForm内部人员负责很多这样的事情)但是理解它在API级别实现的基本知识非常有用
  • How to draw on the non-client area:这显示了如何在标题栏中绘制Office的工具栏。 .Net代码,但可翻译
  • Setting up a custom title bar:非常详细的关于非客户区绘图的文章(在Delphi中,所以Delphi代码)。跟进part 2,演示完全接管整个窗口并自己模仿标准标题栏。 这两篇文章将让您按照问题中的要求模仿Office和Chrome
  • How to set up various VCL controls to work best on a glass area:VCL不能很好地支持玻璃。无论你做什么尝试和解决它,你经常会得到文物,或控制根本就没有正确绘制。本文列出了基本的VCL可视化组件(标签,按钮,进度条等)以及为每个组件设置的内容,以便它们完美地绘制,或者当它们放置在玻璃区域时至少“尽可能”绘制

高级或切向相关:

答案 1 :(得分:6)

在Vista / Windows 7下绘制自定义标题栏时,

These posts可能会让您感兴趣。

示例图片:

Sample

答案 2 :(得分:5)

我确定你找到了MSDN page about the DWM。它已经跳过很多主题和一些例子。一些“概述”文章有例子(如DWM Blur Behind Overview)。

不幸的是,除了文档之外,还有很少的好文章。您可以从Using glass on codeproject开始,然后查看detecting glass in delphi - 之后直接使用文档中的函数也不错。幸运的是,他们在练习中都非常直接。

答案 3 :(得分:2)

玻璃组件的良好网站,包括玻璃按钮:

http://rmklever.com/

答案 4 :(得分:0)