我正在尝试使用WinAPI(基本上像Visual Studio 2012样式)在Windows 7和Windows 8上运行简单的metro风格窗口,我知道这是一项艰苦的工作,一开始,我遇到了这些问题:
1。创建一个平方窗口
我可以通过创建一个borderless
窗口(意味着没有边框,没有标题栏,只有客户区)来实现这一点,但通过这种方式,我无法调整此窗口的大小,标题栏当然也丢失了。这些方法是否可以创建方形角窗并保持标题栏(包括close,max,min,...按钮)?
2。所有者绘制close
,maximize
,minimize
按钮
我可以通过捕捉WM_NCPAINT
事件来绘制整个标题栏但这样我看到这些按钮(关闭,最大化,最小化)会变成地狱。如何以我的方式显示这些按钮(我的意思是通过我的想法来绘制它)?
第3。创建阴影
你可以看到,如果Visual Studio 2012的窗口没有最大化,它会显示阴影,它看起来很棒,我想将这个效果应用到我的简单窗口。我怎么能这样做?
答案 0 :(得分:1)
除了SLaks所说的,这将是有效的,但需要花费很多精力并且需要时间,您可能需要考虑是否可以使用框架来开发您的程序。如果可以,那么您可以使用框架工具包来实现“窗口镶嵌”,让您可以自由地处理应用程序的重要部分:逻辑。
如果你可以使用MFC,那么我会推荐CodeJock的Toolkit Pro 2013;我不以任何方式与他们有任何关系,但过去曾使用过他们的产品而且非常好。
我确信还有其他工具包,其中一些可能针对不同的框架,但我没有使用它们的经验,也没有推荐它们的基础。
答案 1 :(得分:1)
您需要编写自己的代码来绘制基本的窗口元素,并手动处理鼠标事件以使它们具有交互性。 (挂钩WM_NCHITTEST
可能有助于互动)
要制作阴影,请将窗口分层,然后使用Alpha透明阴影设置背景图像。