Mos*_*ses 2 c++ windows winapi
我对winapi和c ++非常陌生,但我需要制作带有细边框和圆角的文本字段.我在winapi参考中找不到这种风格:http://msdn.microsoft.com/en-us/library/windows/desktop/ff700543(v = vs.85).aspx 既不是在简单的窗口样式也不是在扩展中.我找到的唯一足够的边界是WS_EX_CLIENTEDGE,但它不是我需要的.这是显示当前和期望外观的图片:
那么我该怎样做才能制作这个花哨的边框呢?
这不是每个窗口样式的问题."所需"窗口设置了所有默认样式.不同之处在于它以视觉风格为主题.您的"当前"窗口使用的是"经典"主题(换句话说,不是主题).
对此的标准修复是在您的应用程序中包含一个清单,该清单选择使用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='*'\"")
Run Code Online (Sandbox Code Playgroud)
或者,您可以以正确的格式创建清单文件,并将其手动包含在构建过程中.您甚至可以通过编程方式启用主题,但在这种情况下这是不必要的.您希望它用于整个应用程序,因此只需使用清单.
可以在文档中找到更多信息:启用视觉样式
(对不起,我不能告诉你为什么,在2014年,在现代版本的Visual Studio中默认情况下不会发生这种情况.我听说应该自动包含相应的清单,但我从未见过它的工作原理,即使您使用包含的项目模板.创建自己的骨架模板并使用它的众多原因中的另一个原因.)