gpt4 book ai didi

c++ - C++对话框中的多种字体

转载 作者:行者123 更新时间:2023-12-01 14:50:54 24 4
gpt4 key购买 nike

在C++中是否有一种简单的方法(如果可以,最好在Visual Studio VS2012中进行操作),以便为一个对话框窗口的不同元素设置不同的字体属性(大小,类型,粗体等)(按钮,静态文字,标题等)?

对话框窗口的字体属性可以在VS2012的“属性”对话框中进行修改,但随后会应用于所有窗口元素。

我需要在同一窗口中强调一些其他信息。以便在视觉上更轻松地将标签与变量值区分开,将静态与可修改变量区分开。

谢谢你的帮助。

最佳答案

约翰·莫里森·莱昂(John Morrison Leon)在最近写得很好的article中介绍了他的解决方案,该解决方案正好解决了这个问题以及更多问题。

除了使格式化成为可能之外,它还提供了一种全新的方式来轻松创建和使用纯C++的对话框窗口(Win32,不带MFC或ATL / WPL,独立于IDE,在编译时而不是运行时进行映射)。

这篇文章是一个相当详细的教程,由The Code Project Open License(CPOL)许可。它包含所有C++源代码(37.2kB zip)和示例(80 + kB)。它赢得了2015年5月的最佳C++文章(一等奖)。

-------------从这篇(长篇)文章中摘录的摘录-----------------------

将对话框完全指定为C++代码的另一种方法,既不需要编写IDE支持,也不需要执行IDE生成的资源。由C++类型系统提供支持。

与此处介绍的方法的根本区别在于,您的代码完成了创建对话框的所有工作,而不是让Windows从随后将代码附加到其中的对话框模板资源创建对话框。不需要对话框或控件ID,因为没有运行时代码到对话框模板的映射。而是有每个控件到C++变量的编译时映射。此外,这些变量中的每一个都有其自己独特的数据类型。这种丰富的类型也许是激进的,但它带来了很多好处,并且是设计的关键。它允许C++语言在编译时通过类型解析来解决许多问题,从而减少并简化了您必须编写的代码。实际上,这意味着对于代表控件的每个变量(例如btnCancel),都会生成一个唯一的数据类型,其名称以下划线_btnCancel为前缀。如您所见,有时需要通过以下方式引用控件其数据类型为_btnCancel,而不是其变量名称btnCancel。

下一节将解决不熟悉编码而不是拖放布局的问题,此后,大多数事情比您习惯的要简单,干净和简洁。

还有其他一些创新,包括:

•所有控件变量都带有一个动态文本动态文本缓冲区as_text,通过它可以读取和写入控件窗口文本,并在关闭对话框时保持不变。

•支持仅绘制在对话框上并响应鼠标事件的非Windows控件。 (提供了一些更合理的示例)。

•支持在托管的所有对话框的应用程序级别上强加美学指标(按钮大小,间距,颜色,控件样式等)。

•用Expand_X和Expand_Y样式替换控件的“ anchor ”概念,如果对话框窗口被放大,则可以从控件中受益。

•通过控件对Win 32编程进行一些适度但有效的简化。

关于c++ - C++对话框中的多种字体,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31117308/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com