问题标签 [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.

0 投票
2 回答
1062 浏览

wpf - .NET GUI 中是否仍在使用本机 Windows 控件?

当您使用 WinForms 或 WPF 创建 GUI 时显示的内容是否仍然基于本机控件(如Common Controls)或任何系统提供的窗口类,或者显示的所有内容都是由框架绘制的“自定义”?

注意:我说的不是文件对话框之类的东西,而是实际使用 WinForms 或 WPF 实现的 GUI。

是的,这纯粹是出于兴趣。

0 投票
1 回答
427 浏览

windows - 删除纯win32后Listview Item返回

我在纯 Win32 程序上的 Listview 问题当我删除项目时,然后在删除项目返回之前单击它的位置。所以 Listview 实际上不能删除任何项目

这是程序和来源:

0 投票
1 回答
885 浏览

c++ - 选项卡对话框控件的子项覆盖选项卡本身

WM_INITDIALOG我以这种方式创建一个选项卡控件:

我还在这里创建了两个对话框,以在每个选项卡中显示为选项卡的内容。我使用工具箱选择表单视图对话框创建它们:

现在WM_NOTIFY我正在对每个选项卡的内容执行此操作:

现在选项卡已创建并且一切正常(当前选项卡的内容不可见),但是当我单击其中一个选项卡项时,对话框覆盖了所有选项卡控件,您再也看不到选项卡了。怎么了 ?我应该修改什么?

0 投票
2 回答
2502 浏览

windows - 创建钢筋控件并将带工具栏的带引入钢筋

我使用这段代码创建了一个 rebar 控件,并在 rebar 中引入了一个带工具栏的带。
但是当窗口出现时,我看不到工具栏。当我检查钢筋的高度时,在这行代码中:int height = wp.rcNormalPosition.bottom - wp.rcNormalPosition.top;我发现钢筋的高度只有 4 个像素。

0 投票
1 回答
934 浏览

c++ - 时间选择器控件的 DTM_SETFORMAT 不支持格式说明符

我正在使用以下代码将 Time Picker 控件的格式(使用 Win32 类名SysDateTimePick32)设置为仅以美国英语格式显示时间:

当我在为美国英语用户帐户设置的 Windows 7 上运行它时,控件看起来不错,如下所示:

在此处输入图像描述

但是,如果我在 Windows 7 上运行它,并且用户帐户设置为德语格式:

在此处输入图像描述

控件看起来像这样(缺少 AM/PM 部分):

在此处输入图像描述

请注意,在这两种情况下,格式字符串都是“h:mm:ss tt”,根据此页面,这意味着tt应该代表 AM/PM 部分。

知道如何解决这个问题吗?

0 投票
2 回答
83 浏览

c - 由于 MessageBoxEx 导致程序崩溃

我试图从 EDIT 控件中提取文本并将其显示在 win32 中的 MessageBox 中,代码编译并运行,但是每当我单击按钮执行任务时,程序停止工作并崩溃,我试图自己跟踪它并以某种方式发现 MessageBoxEx 导致崩溃,这是代码片段,

我该如何解决?

0 投票
2 回答
3834 浏览

vb6 - vb6 无法在 Windows 7 64 位上加载带有状态栏控件的表单

我正在尝试加载打开的 vb6 表单,但它说找不到项目或库,并且光标指向状态栏。这行特定的代码:

我已经从 Microsoft 安装了用于 vb6 更新的通用控件,但它仍然没有完成这项工作。

我也试过这个:

无法打开 VB 项目,出现错误“C:\windows\system32\mscomctl.ocx”无法加载

并关闭vb6,重新打开项目并尝试使用控件打开表单,它给了我同样的错误信息。

该版本是安装了sp6的企业版。

任何解决此问题的建议将不胜感激。

谢谢!

0 投票
0 回答
534 浏览

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 包装器丢弃消息或相关的计时器事件以及为什么我需要“手动”进行更深入的了解?

这是使其取得进展所必需的。

0 投票
1 回答
2072 浏览

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 像素的值。我还考虑了视图使用图标的可能性(在这种情况下,我将图标的宽度加上边距再次添加到第一列)。

0 投票
1 回答
5616 浏览

vb6 - 运行时错误 429 - ActiveX 组件无法创建对象

我们有一个在 Windows 2008 R2 Server 上运行的 VB6 程序。我们收到错误:

运行时错误 429 -ActiveX 组件无法创建对象

ActiveX 组件:MSCOMCTL.OCX

同一程序在另一台 Windows 2008 R2 Server 上成功运行。