问题标签 [common-controls]
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.
wpf - .NET GUI 中是否仍在使用本机 Windows 控件?
当您使用 WinForms 或 WPF 创建 GUI 时显示的内容是否仍然基于本机控件(如Common Controls)或任何系统提供的窗口类,或者显示的所有内容都是由框架绘制的“自定义”?
注意:我说的不是文件对话框之类的东西,而是实际使用 WinForms 或 WPF 实现的 GUI。
是的,这纯粹是出于兴趣。
windows - 删除纯win32后Listview Item返回
我在纯 Win32 程序上的 Listview 问题当我删除项目时,然后在删除项目返回之前单击它的位置。所以 Listview 实际上不能删除任何项目
这是程序和来源:
c++ - 选项卡对话框控件的子项覆盖选项卡本身
WM_INITDIALOG
我以这种方式创建一个选项卡控件:
我还在这里创建了两个对话框,以在每个选项卡中显示为选项卡的内容。我使用工具箱选择表单视图对话框创建它们:
现在WM_NOTIFY
我正在对每个选项卡的内容执行此操作:
现在选项卡已创建并且一切正常(当前选项卡的内容不可见),但是当我单击其中一个选项卡项时,对话框覆盖了所有选项卡控件,您再也看不到选项卡了。怎么了 ?我应该修改什么?
windows - 创建钢筋控件并将带工具栏的带引入钢筋
我使用这段代码创建了一个 rebar 控件,并在 rebar 中引入了一个带工具栏的带。
但是当窗口出现时,我看不到工具栏。当我检查钢筋的高度时,在这行代码中:int height = wp.rcNormalPosition.bottom - wp.rcNormalPosition.top;
我发现钢筋的高度只有 4 个像素。
c++ - 时间选择器控件的 DTM_SETFORMAT 不支持格式说明符
我正在使用以下代码将 Time Picker 控件的格式(使用 Win32 类名SysDateTimePick32
)设置为仅以美国英语格式显示时间:
当我在为美国英语用户帐户设置的 Windows 7 上运行它时,控件看起来不错,如下所示:
但是,如果我在 Windows 7 上运行它,并且用户帐户设置为德语格式:
控件看起来像这样(缺少 AM/PM 部分):
请注意,在这两种情况下,格式字符串都是“h:mm:ss tt”,根据此页面,这意味着tt
应该代表 AM/PM 部分。
知道如何解决这个问题吗?
c - 由于 MessageBoxEx 导致程序崩溃
我试图从 EDIT 控件中提取文本并将其显示在 win32 中的 MessageBox 中,代码编译并运行,但是每当我单击按钮执行任务时,程序停止工作并崩溃,我试图自己跟踪它并以某种方式发现 MessageBoxEx 导致崩溃,这是代码片段,
我该如何解决?
vb6 - vb6 无法在 Windows 7 64 位上加载带有状态栏控件的表单
我正在尝试加载打开的 vb6 表单,但它说找不到项目或库,并且光标指向状态栏。这行特定的代码:
我已经从 Microsoft 安装了用于 vb6 更新的通用控件,但它仍然没有完成这项工作。
我也试过这个:
无法打开 VB 项目,出现错误“C:\windows\system32\mscomctl.ocx”无法加载
和
并关闭vb6,重新打开项目并尝试使用控件打开表单,它给了我同样的错误信息。
该版本是安装了sp6的企业版。
任何解决此问题的建议将不胜感激。
谢谢!
vb6 - 在 VB6 中,字幕进度条和 PM_SETMARQUEE 被忽略
我刚刚尝试在我的一个 VB6 应用程序中设置滚动选取框进度条,虽然它似乎切换到选取框模式,但自动计时器(通过设置PBM_SETMARQUEE
)要么失败,要么被忽略。
- 我有一个适当的视觉风格清单。
- 我已经调用
InitCommonControls
了表单的Initialize
事件。 - 我正在使用 v5 SP2 通用控件。
- 项目已编译。
- 我已经
PBS_MARQUEE
通过设置样式SetWindowLong
并确认它已应用。 PBM_SETMARQUEE
消息返回 1 。
结果:
- 如果我最小化并恢复窗口,它会前进一步。
- 如果我设置
.Value
它会前进一步。 - 如果我发送
PBM_STEPIT
它会前进一步。 - 如果我发送
PBM_SETMARQUEE
它坐在那里什么都不做。
如果我没有传递初始PBM_SETMARQUEE
启用消息,那么最小化/恢复不会导致它继续提示计时器是问题所在。
这与 2006 年在此线程中讨论的问题相同
PBM_SETMARQUEE
有没有人对为什么 VB 包装器丢弃消息或相关的计时器事件以及为什么我需要“手动”进行更深入的了解?
这是使其取得进展所必需的。
windows - 如何根据其内容正确设置 ListView 列的大小?
我有许多用于显示数据的列表视图控件 (TListView)。所有这些列表视图都设置为“详细信息”模式,并且都将 TImageList 分配给它们的“SmallIcons”属性。
我试图根据它们的内容设置这些列的宽度,就像用户双击每个列标题末尾的分隔符滑块一样。
首先,我尝试将列宽设置为“-1”和“-2”以自动调整它们的大小:不仅不能完美地工作(一些包含本地字符的列 - 我使用的是 D6,这意味着 ANSI 字符串- 太低了),但它也使列的显示非常慢(当它以固定宽度瞬时显示具有 6 列和 150 个项目的列表视图时,最多需要 30 秒)。
我尝试在每个单元格上使用 GetTextExtent 来获得文本的预期宽度,添加一些边距(从 2 到 10 像素),如果列的宽度低于计算的文本宽度,则扩展列的宽度。对第一列 (Items.caption) 应用特殊处理以考虑图标的显示(我将图标的宽度加上边距添加到单元格文本的宽度)。
这也不起作用:在许多情况下(例如,以“yyyy/mm/dd hh:nn:ss”格式显示日期会导致文本太大而无法放入列中)。
考虑到问题可能来自窗口主题引擎,我已切换到使用 GetThemeTextExtent 而不是 GetTextExtent 但获得了相同的结果。
唯一可行的方法是为每个列宽添加任意大的边距(20 像素),但当然,这会产生比应有的更大的列。
那么,是否有任何替代策略?我不需要任何东西,只需要计算一次正确宽度的东西:当第一次填充列表时。“单击列分隔符”背后的代码工作得很好,但我找不到如何通过代码触发它(好吧,我想我可以将双击消息直接发送到标题作为黑客攻击)
为了澄清起见,这是我尝试以下代码的事情:
(在调用情况下,有一个调用ListView.canvas.Font.Assign(ListView.font)
。它不在这些函数中,因为单个赋值就足够了,但是代码会在列表视图的所有非自动调整大小的列上循环)。
编辑
我最初尝试使用 Windows Theme API:
下次尝试使用 DrawText/DrawTextW:
第三次尝试使用delphi的TextWidth函数
在所有情况下,我都会为结果宽度添加一个边距:我尝试了高达 20 像素的值。我还考虑了视图使用图标的可能性(在这种情况下,我将图标的宽度加上边距再次添加到第一列)。
vb6 - 运行时错误 429 - ActiveX 组件无法创建对象
我们有一个在 Windows 2008 R2 Server 上运行的 VB6 程序。我们收到错误:
运行时错误 429 -ActiveX 组件无法创建对象
ActiveX 组件:MSCOMCTL.OCX
同一程序在另一台 Windows 2008 R2 Server 上成功运行。