使用花哨的细边框创建文本字段。 WINAPI

时间:2014-07-31 14:49:03

标签: c++ windows winapi

我对winapi和c ++非常陌生,但我需要制作带有细边框和圆角的文字字段。我无法在winapi参考中找到这种风格:http://msdn.microsoft.com/en-us/library/windows/desktop/ff700543(v=vs.85).aspx 无论是简单的窗口样式还是扩展窗口样式。我找到的唯一足够的边界是WS_EX_CLIENTEDGE,但它不是我需要的。这是显示当前和期望外观的图片:

current and desired look

那么我该怎样做才能制作这个花哨的边框呢?

1 个答案:

答案 0 :(得分:7)

这不是每个窗口的样式问题。 “所需”窗口设置了所有默认样式。不同之处在于它具有视觉风格的主题。您的“当前”窗口使用的是“经典”主题(换句话说,不是主题)。

对此的标准修复是在您的应用程序中包含一个清单,该清单选择使用Common Controls库的第6版 - 支持主题的版本。出于安全原因选择加入,因此只有准备好处理主题控件的应用程序才能获得它们。

如果您使用的是Visual Studio,则可以请求链接器自动将所需的清单嵌入到您的应用程序中。将以下代码行放在预编译的头文件或等效文件中:

#pragma comment(linker,"\"/manifestdependency:type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' processorArchitecture='*' publicKeyToken='6595b64144ccf1df' language='*'\"")

或者,您可以以正确的格式创建清单文件,并手动将其包含在构建过​​程中。您甚至可以通过编程方式启用主题,但在这种情况下这是不必要的。您希望将它用于整个应用程序,因此只需使用清单。

更多信息可在文档中找到:Enabling Visual Styles

(对不起,我不能告诉你为什么,在2014年,在现代版本的Visual Studio中默认情况下不会发生这种情况。我听说应该自动包含相应的清单,但是我即使您使用所包含的项目模板,也从未见过它是有用的。创建自己的骨架模板并使用它的众多原因中的另一个原因。)