问题标签 [c++builder-xe7]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c++ - ShellExecute(和 ShellExecuteEx)对我的 URL 没有任何作用
我正在使用 C++Builder XE7 创建一个项目,其中用户可以单击按钮打开 Web 链接,例如打开支持页面,或在社交媒体上分享他的经验。为此,我使用了该ShellExecute()
功能,它运行良好,除了一个按钮。
当我点击这个按钮时,什么也没有发生。函数返回没有错误(ShellExecute()
返回值为42),但是我的默认浏览器没有打开,网页根本没有显示。
这是我的ShellExecute()
实现
我也试过这个ShellExecuteEx()
功能:
该url
参数包含我要打开的网站链接。出于安全原因,我不能将它作为示例发布在这里,但是我在浏览器(FireFox)中对其进行了测试,它运行良好。另一方面,如果我只是通过将url
内容替换为谷歌网站来执行我的代码,那么一切都会按预期工作。
handle
只是父框架的参数Handle
。
我还尝试调整ShellExecute/Ex()
参数,例如hwnd
andnShow
字段,但没有改变。
谁能指出我出了什么问题?
performance - 日文文本的 VCL 是否显着变慢?
我正在使用 RAD Studio XE7(C++ 生成器)。对于我的一个项目,主窗体包含几个组件,如面板、按钮、标签、编辑框……,其中几个已激活“自动调整大小”属性。直到现在我一直在这个界面上显示英文文本,他的开场表现尚可。
我最近把这个界面翻译成了日文。我注意到开放时间明显变慢了。
使用分析器(Shiny),我测量了两者之间的差异。我注意到 VCL 可能会处理几个属性,例如位置和大小,直到打开日语界面时慢 10 倍。当诸如 pControl->Width 或 pControl->Margins->Top 之类的属性发生变化时,性能泄漏明显出现。我没有修改两个版本之间的任何代码行,只修改了 DFM 文件中的文本,没有别的。
我不敢相信 VCL 的性能会降到这么多。VCL 中是否存在关于日语文本表演的已知问题?使用 VCL 控件防止此类情况的良好做法是什么?
vcl - 最后一行的 TListView Caption-Cell 没有着色
我已经使用 VCL 几个月了,可以通过谷歌搜索解决我所有的问题,但是这个让我卡住了。每当该行的索引 7 处的子项不包含特定文本时,我想在 TListView 中为该行着色(请参见下面的代码)。这一切都很好,除了最后一行的标题单元格(最左边)没有着色。我尝试了一些技巧(例如,在绘制项目时启用然后禁用 ListView),但我没有找到不会破坏表单上其他内容的技巧(例如计时器)。此外,在我单击单元格后,它确实会着色......我在 Windows 7 上使用 XE7 (C++Builder)。所有建议都表示赞赏;)
编辑 (在这里回答评论,因为没有足够的代表:P)
@PaulMcCarthy 是的,这对我来说也很奇怪......
@RemyLebeau 感谢您的建议,我实施了它们。
此外,我设法通过额外调用OverviewListView->Refresh()
from outside来正确绘制CustomDrwaItem
它,但它仍然让我感到困扰,没有它它就无法工作(双关语有点有意)。
windows - Windows 7 - 高 DPI - RAD Studio XE7 的 SetProcessDPIAware 问题?
我正在使用 Embarcadero RAD Studio C++ Builder XE7 在 Windows 7 系统上开发应用程序。我正试图让我的应用程序 DPI 之一知道。为此,我需要重现以下行为之一:
- 停止所有类型的 DPI 感知,让应用程序保持相同大小,无论选择什么 DPI
- 允许 Windows 虚拟化应用程序(AFAIK 这是默认行为)
- 通过在我的应用程序的每个表单上启用 TForm Scaled 属性,通知 Windows 应用程序可识别 DPI,并让应用程序调整其组件的大小。
使用清单文件,我可以在我的应用程序中完美地重现这 3 个场景。
但是,我想在运行时从应用程序本身内部选择应用程序的行为方式。例如,我想使用如下命令行打开我的应用程序:
C:> MyApp.exe /DPIBehavior=[忽略,虚拟化,缩放]
我注意到 Windows SDK 提供了几个函数来实现这一点。由于我仍在 Windows 7 上开发,我无法使用或测试 SetProcessDPIAwareness() 函数,因为在 Windows 8.1 之前不可用,所以我尝试使用 SetProcessDPIAware() 函数。
我注意到这个功能很好地停止了 Windows 虚拟化过程。但是,即使我的表单属性上的 Scaled 属性设置为 true,我的表单也不再缩放。我在这里指定我编译了我的应用程序的 2 个不同版本,一个在主窗体上启用了 Scaled 属性,另一个没有,但两者都尽快调用 SetProcessDPIAware() 函数。
我在 192 dpi 下测试了这些应用程序版本。由于它们产生完全相同的结果,即完全相同大小的用户界面,我推断使用 SetProcessDPIAware() 函数时缩放不起作用。另一方面,当我使用清单而不是调用 SetProcessDPIAware() 函数来运行完全相同的应用程序时,我得到了预期的结果:一个应用程序被缩放,另一个没有。
谁能向我解释如何在保持 TForm 缩放的同时使用 SetProcessDPIAware() 函数?或者它是一个 XE7 错误?
c++ - 设置 TIdHTTP 对象时的定期访问冲突
在设置 TIdHTTP 对象时,我正在为定期访问冲突而苦苦挣扎。我正在使用以下代码:
此代码在线程 (TThread) 中运行。在任何给定时间可能有多个线程处于活动状态,发出单独的请求。随着每个请求完成,线程被销毁。
这段代码大部分时间都可以工作,但在运行看似随机的时间后会开始抛出访问冲突,通常形式如下:
一旦访问冲突开始,所有后续线程都会抛出类似的访问冲突。让事情回到正轨的唯一方法是关闭应用程序并重新启动。
我正在使用 C++Builder XE7,带有编译器附带的 Indy 版本(Indy 10.6.1.5182 ???)
到目前为止,我无法在调试器中复制此问题以获取任何其他信息。
任何想法可能导致访问冲突?
c++ - 如何将枚举传递给方法而不将其作为整数传递
我有一个包含 3 个不同值的枚举
我正在尝试将这三个枚举值之一传递给一个方法,并尝试了以下方法。
和办公室
(所有三个都称为 methodName(InputValidation_Number) )
我知道最后一个会“工作”,但允许所有整数作为参数。如何编写仅接受 inputValidation 值的方法?
c++ - 如何正确地将 ATL 包含到 Embarcadero 项目中
我得到了一个遗留的 Visual C++ 项目,我需要在 Embarcadero RAD Studio XE7 中编译它,但是我在构建它时遇到了问题。目前,我对 ATL 库有疑问,项目的某些组件需要这些库:
我已经将所有 ATL 文件从复制
include/atl
到windows/sdk/atl
该项目需要
atlsafe.h
. 我已经安装了具有这些标头的 Visual Studio 2013,但我确实了解如何正确使用它们。如果我复制atlsafe.h
到windows/sdk/atl
,我开始收到很多与过时有关的错误atlbase.h
。一旦我更换atlbase.h
,我开始收到更多错误(预期),依此类推。
通常,问题是,我如何正确配置我的 C++Builder 项目以用于 ATL,以及从哪里获得正确版本的标头?例如,对于 boost 标头,问题很容易解决(构建正确的版本并将标头的路径添加到-I
指令)。