WinAPI创建metro风格的应用程序问题

WinAPI创建metro风格的应用程序问题,winapi,visual-c++,windows-8,visual-studio-2012,Winapi,Visual C++,Windows 8,Visual Studio 2012,我正在尝试使用WinAPI(基本上类似于Visual Studio 2012样式)在Windows 7和Windows 8上运行来实现简单的metro样式窗口,我知道这是一项艰巨的工作,一开始,我遇到了以下问题: 1。创建方形窗口 我可以通过创建一个无边框的窗口(意思是没有边框,没有标题栏,只有客户区)来实现这一点,但通过这种方式,我无法调整此窗口的大小,标题栏当然丢失了。这些方法是否可以创建一个方形角窗口,并且仍然保留标题栏(包括关闭、最大、最小等按钮) 2。所有者绘制关闭,最大化,最小化按钮

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

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

2。所有者绘制
关闭
最大化
最小化
按钮

我可以通过捕捉
WM\u NCPAINT
事件来绘制整个标题栏,但这样我看到这些按钮(关闭、最大化、最小化)都会下地狱。如何以我的方式显示这些按钮(我的意思是根据我的想法绘制)

3。创建阴影

您可以看到,如果VisualStudio2012的窗口没有最大化,它会显示一个阴影,看起来很棒,我想将这种效果应用到我的简单窗口中。除了SLaks所说的,这将是有效的,但需要花费大量的时间,你可能想考虑是否可以使用一个框架来开发你的程序。如果可以,那么您可以使用框架工具包来实现“window chrome”,让您可以自由地处理应用程序的重要部分:逻辑

如果你能使用MFC,那么我推荐CodeJock's;我与他们没有任何关系,但在过去使用过他们的产品,非常好


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

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


要生成阴影,请将窗口分层,然后将背景图像设置为alpha透明阴影。

1&2:您需要编写代码来绘制按钮和处理鼠标事件。祝你好运另请参见WM\U NCHITTEST
。3:创建一个背景部分透明的分层窗口。一个更基本的问题是为什么要这样做?:)Metro很难成为用户界面设计的巅峰。@SLaks:你能提供创建带有部分透明背景的分层窗口的更多细节吗?@BìnhNguyên:不太可能。IIRC,设置一个以alpha通道为背景的图像。请参阅MSDN。@SLaks:谢谢您的快速回复!你能回答我吗?谢谢你!,我这样做只是为了好玩:请回答更多问题。我创建了一个带有
WM_POPUPWINDOW
样式的窗口(删除标题栏以获得完美的方形窗口),问题是当我从
WM_nchitest
返回
HTTOP
(或
HTTOPLEFT
,…)时,它并没有按预期调整窗口大小。怎么解决这个问题?@BìnhNguyên:我不知道。