0

我正在尝试使用 WinAPI(基本上类似于 Visual Studio 2012 风格)实现简单的 Metro 风格窗口,以在 Windows 7 和 Windows 8 上运行,我知道这是一项艰苦的工作,一开始,我遇到了这些问题:

1.创建一个方形窗口
我可以通过创建一个窗口来实现这一点borderless(意味着没有边框,没有标题栏,只有客户区)但是通过这种方式,我无法调整这个窗口的大小并且标题栏当然丢失了。这些是否有任何方法可以创建方角窗口并仍然保留标题栏(包括关闭、最大、最小、...按钮)?

2. 所有者绘制close, maximize,minimize按钮
我可以通过捕获WM_NCPAINT事件来绘制整个标题栏,但是这样我看到这些按钮(关闭、最大化、最小化)就完蛋了。如何以我的方式显示这些按钮(我的意思是按我的想法绘制它)?

3. 创建阴影
你可以看到,如果 Visual Studio 2012 的窗口没有最大化,它会显示一个阴影,它看起来很棒,我想将该效果应用到我的简单窗口。我怎样才能做到这一点?

4

2 回答 2

1

除了 SLaks 所说的,这会奏效,但需要付出很多努力并且需要时间,您可能需要考虑是否可以在开发程序时使用框架。如果可以,那么您可以使用框架工具包来实现“窗口镶边”,让您可以自由地处理应用程序的重要部分:逻辑

如果你可以使用 MFC,那么我会推荐 CodeJock 的Toolkit Pro 2013;我与他们没有任何关系,但过去曾使用过他们的产品,而且非常好。

我确信还有其他工具包,其中一些可能针对不同的框架,但我没有使用它们的经验,也没有推荐它们的依据。

于 2013-05-21T17:19:43.780 回答
1

您需要编写自己的代码来绘制基本窗口元素,并手动处理鼠标事件以使它们具有交互性。(挂钩WM_NCHITTEST可能有助于交互)

要制作阴影,请将窗口分层,然后设置具有 alpha 透明阴影的背景图像。

于 2013-05-22T03:32:04.553 回答