Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/magento/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++;Builder 6-如何将外观非常陈旧的小部件更改为Windows外观? 我使用C++ Builder 6,F.E.按钮或PrimeStar有非常老的外观,比如Windows 95/98。P_C++_C++builder 6 - Fatal编程技术网

C++;Builder 6-如何将外观非常陈旧的小部件更改为Windows外观? 我使用C++ Builder 6,F.E.按钮或PrimeStar有非常老的外观,比如Windows 95/98。P

C++;Builder 6-如何将外观非常陈旧的小部件更改为Windows外观? 我使用C++ Builder 6,F.E.按钮或PrimeStar有非常老的外观,比如Windows 95/98。P,c++,c++builder-6,C++,C++builder 6,我怎样才能改变它?我真的想让它们像在Windows中一样 我的意思是在Builder中生成程序,这个程序将在Windows7中显示按钮,就像在Windows7中显示按钮一样,在W10/W8中显示进度条,就像在W10/W8中显示一样。 我想让它取决于操作系统 我是C++初学者,请…除非太难,否则要让它变得非常简单。C++Builder 6早于XP和该功能,因此其VCL根本不支持主题设置/样式设置(尽管有用于自定义蒙皮的第三方组件)。这就是为什么您的UI看起来“旧”的原因 许多本机VCL组件基于标准

我怎样才能改变它?我真的想让它们像在Windows中一样

我的意思是在Builder中生成程序,这个程序将在Windows7中显示按钮,就像在Windows7中显示按钮一样,在W10/W8中显示进度条,就像在W10/W8中显示一样。 我想让它取决于操作系统


我是C++初学者,请…除非太难,否则要让它变得非常简单。

C++Builder 6早于XP和该功能,因此其VCL根本不支持主题设置/样式设置(尽管有用于自定义蒙皮的第三方组件)。这就是为什么您的UI看起来“旧”的原因

许多本机VCL组件基于标准Win32控件,这些控件支持视觉样式(如果有)。然而,一些VCL组件在设置样式时会出现运行时问题,因为它们的设计不能正确处理样式设置

幸运的是,您可以通过安装来解决这些问题(SoftGems的代码在更高版本的C++Builder中直接集成到VCL中)

SoftGems'
TThemeManager
组件在运行时动态地钩住各种VCL组件(还允许自定义控件的用户定义钩子),以修复其中与样式相关的错误。只需将它放到MainForm上,并可以选择设置一些属性来控制它所钩住的UI控件的类型

SoftGems'
TXPManifest
组件具有嵌入式ComCtrl v6清单资源,可启用视觉样式。只需将其放在主窗体上,就无需配置

然而,
TXPManifest
所做的就是启用视觉样式。一个应用程序只能有一个清单,如果您需要自定义清单(例如用于处理UAC、指定Windows兼容性标志等,这是当今大多数现代应用程序非常需要做的事情),则根本不要使用
TXPManifest
。您必须创建自己的自定义清单,编译成一个
.res
文件,该文件链接到应用程序的
.exe
文件的资源中。最简单的方法是在外部
.manifest
文件中定义清单内容,然后使用
.rc
文件将其编译成
.res
文件,例如:

myapp.exe.manifest


,然后可以将生成的
.res
文件添加到项目中:

brcc32 mymanifest.rc

否则,忘记所有这些,只需使用提供高级UI和功能的第三方组件套件,如、、等。

“我如何更改它?”获得更现代的编译器,如VS2015。@πάνταῥεῖ 这可能不是必需的,有一种方法可以在清单文件中实现。(即使使用MSVC 2010编译的程序也有旧的外观)看看中的任何步骤是否适用于您。(您可能需要创建一个.rc文件)@πάνταῥεῖ 我不会,我讨厌它,真的。也许C++ Builder不是那么现代,实际上它很老了,但是我喜欢它,它对我来说很容易。我在VS或QT中感觉不好。很快我会试试的,如果有人有其他事情,来吧。@Persantarus“我讨厌它,字面上”似乎你陷入了某种“失明综合症”。我决不会让我的权力和能力受到任何特定的第三方IDE、框架等的限制。你们可能更喜欢在下面黑暗的隧道里行走。好的,谢谢你们,这很有效!但我还有一个问题,当我在Builder中运行im和在project文件夹中运行.exe时,它可以工作,但当我将.exe带到另一个位置(即使使用rc和manifest)时,它就不工作了。我现在该怎么办?@Persantarus它工作得很好(我已经做了很多年了)。您是否已将清单编译到.exe文件的资源中,并具有正确的资源ID和资源类型?听起来你没有,或者做得不正确。一个家伙告诉我,我应该从这个.rc文件生成.res文件,但当我使用brcc32.exe执行时,它不会生成.res文件。我不知道我做错了什么。@Persantarus:我们也知道,因为你没有提供任何关于你实际上在做什么的细节。但一般来说,您需要一个
.res
文件,并且需要将其链接到
.exe
资源中。如果将
.rc
文件添加到项目中,它将自动编译为
.res
文件并链接到
.exe
。否则,可以手动使用
brcc32
创建
.res
,然后将其添加到项目中,而不是
.rc
。如果您没有从brcc32获取
.res
文件,则表明您没有正确调用该文件。我应该如何在命令行中调用该文件?
brcc32 mymanifest.rc