问题标签 [comctl32]

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 投票
0 回答
375 浏览

c - 如何让 TTM_POPUP 不会立即淡出然后又回来?

我决定在表格控件中处理工具提示的最简单方法是自己处理初始延迟,动态创建工具提示,然后在不再需要时将其销毁。我的问题是,当我TTM_POPUP用来显示工具提示时,它会立即淡出并在一段时间后再次出现。我宁愿让它淡入并留在那里一次。

我的假设是工具提示正在处理工具提示延迟本身,并将现有提示淡出然后淡入。我不知道该怎么做。我是否应该将延迟时间设置为 0 并期望它能够工作(完全不用担心TTM_POPUP)?或者,还有更好的方法?还是我错了?

下面的程序演示了发生了什么。只需将鼠标悬停在窗口上,您就会看到它。

在 Windows XP 和 Windows 7 上测试。这严格使用 Common Controls 6。

编辑好的,我尝试添加一个TTM_SETDELAYTIME以将初始时间设置为 0(未反映在下面的程序中)。它没有用。如果我保留TTM_POPUP之后,它只会比平时更快地消失(这可能证明了我的假设)。如果我删除TTM_POPUP,它不会显示,直到我移动鼠标。那么我还能做些什么来让我的工具提示弹出?

谢谢!

0 投票
1 回答
1165 浏览

winapi - 如何将焦点设置在列表视图项上?

我正在尝试编写一个程序,在列表视图中选择和聚焦特定项目。

为什么调用 ListView_SetSelectionMark(或发送 LVM_SETSELECTIONMARK)无法将焦点设置在列表视图项上?调用 ListView_SetSelectionMark 后,焦点保持在原来的位置,而不是切换到新位置;当我按下箭头键时,它会从先前聚焦的项目而不是我指定的项目移动。

这是我选择和聚焦项目的代码片段:

这是一个完整的要点。每次按下 Ctrl-R 时,它都会随机选择列表视图中的一项。

0 投票
1 回答
249 浏览

winapi - 替换树视图中的项目时如何修复绘画工件?

我在选项卡控件的内容区域中有一个树视图(树视图是选项卡控件的兄弟)。当我删除树视图项目,添加新的树视图项目并选择其中之一时,树视图未正确绘制;新创建+选定项目上方的所有内容都是灰色的。有没有办法让树视图在删除和插入项目后正确地绘制所有内容?

更换物品前 更换物品后

观察:

  • 如果树视图项目足够少而没有出现滚动条,则树视图看起来不错。
  • 如果树视图旁边没有选项卡控件,则树视图看起来没问题。
  • 如果树视图是选项卡控件的子视图,则树视图看起来正常(但Tab键无法使用 GetNextDlgTabItem/IsDialogMessage 在选项卡控件和树视图之间导航)。
  • 如果在插入新节点后我没有在树视图中选择任何项目,那么树视图看起来不错。

当我将项目插入树中时,我调用 TreeView_InsertItem,然后调用 TreeView_SelectItem。完整的示例要点。在示例程序中,Ctrl+R加速器替换所有树节点并导致工件。

0 投票
0 回答
128 浏览

c - DTM_GETIDEALSIZE 的正确用法是什么?将返回的大小视为像素会给我很大的,有时是可变的高度

我正在尝试使用 自动调整一些日期时间选择器控件的大小DTM_GETIDEALSIZE,但我不太了解如何正确使用此消息。如果将返回的宽度视为像素,则返回的宽度似乎很好,但高度似乎不仅相差甚远,而且有时会随着时间而改变!

下面的示例程序创建了三个日期时间选择器。第一个以自定义格式显示日期和时间,第二个仅使用 显示日期DTS_SHORTDATECENTURYFORMAT,第三个仅使用 显示时间DTS_TIMEFORMAT。调整窗口大小使用 调整所有三个选择器的大小DTM_GETIDEALSIZE。宽度似乎很好。但是,前两个的高度始终为 100,而最后一个(时间选择器)的高度似乎从 98 左右开始,每次调整大小都会减少 2,直到达到 16,此时它保持在 16。

这在 Windows Vista 和 Windows 7 上都进行了测试。以下程序中的错误检查不一致(但为了保持这个简单的测试示例,未检查某些错误)。但是,我会注意到 MSDN 明确记录DTM_GETIDEALSIZE了仅TRUE在没有指定错误条件的情况下返回。

谢谢。

0 投票
2 回答
987 浏览

c++ - MFC 程序挂起:在 Vista 上更新 KB3059317 后 Comctl32.dll 损坏?

我有一个基于 MFC 的程序,它在应用更新3059317之前运行良好:

MS15-060:Microsoft 公共控件中的漏洞可能允许远程执行代码:2015 年 6 月 9 日)

更新替换Comctl32.dll为新版本。

应用此更新后,打开对话框只会挂起程序。并非所有对话框似乎都受到影响,但打印预览始终挂起,但不会导致程序崩溃。它只是变得没有反应。

我不知道如何尝试调试此问题以找到解决方法。在程序挂起时创建内存转储会提供以下堆栈跟踪:

所以我们确实陷入了困境Comctl32.dll——现在呢?

顺便说一句,在某些情况下,卸载更新可以解决问题。

更新

在所有情况下,关闭 Aero 总能解决问题。而且 KB3059317 似乎并不是 2015 年 6 月对 Windows Vista 的唯一一个表现出这种奇怪行为的更新。

0 投票
0 回答
61 浏览

comctl32 - TListBox OnDrawItem 导致 AV 在 COMCTL32.dll

我已经缩小了我的应用程序生成从 COMCTL32.dll 到 TListBox::OnDrawItem 的访问冲突的原因。TListBox.Style 是 lbOwnerDrawFixed。

应用程序使用 C++ Builder XE4 构建,在 Win7-64 和 Win8-64 上运行。我可以在 Win7 上实现它,但只能从 IDE 内部实现,而且只是偶尔发生;Win7 上的发布版本不会引发错误,但在 Win8 上每次都会引发错误。

这仅在首次创建表单时发生。表单包括移动到下一个/上一个记录的按钮,它调用所有控件填充代码,但这些调用从来没有问题;只有在表单构建后的第一次。

表单构造函数将 TTimer 设置为暂停 100 毫秒。TTimer::OnTimer 调用将数据加载到控件中的函数。加载 TListBox 后,将调用 OnDrawItem 事件。

如果我将 TListBox.Style 设置为 lbStandard 并删除自定义 OnDrawItem,则没有问题。

这是 OnDrawItem 处理程序的示例:

我已经测试以确保 TListBox.Canvas 不为 NULL,但它没有任何区别;显然它总是非空的。

我不知道如何从这里着手,欢迎提出建议。

谢谢,凯瑟琳

0 投票
1 回答
278 浏览

dll - 如何链接需要 rsrc 部分和 comctl32.dll 的 64 位可执行文件?

试图构建 UltraDefrag。

听起来很简单,但只要将 rc.o 添加到二进制文件的链接对象,它将使用 32 位版本的 comctl32.dll 在程序启动时触发 0xc0000007 错误。

这是一个已知的 mingw64 错误,但由于该错误自 2011 年以来没有回复,我需要一个解决方法(程序不需要使用 cygwin.dll,所以我不能使用 cygwin)

有任何想法吗 ?

0 投票
3 回答
522 浏览

winapi - 需要列表控制 LVM_SETTOPINDEX

列表视图控件具有LVM_GETTOPINDEX允许获取最顶层可见项的索引的消息。

现在我需要设置最上面的可见项目,但令人惊讶的是没有 LVM_SETTOPINDEX自然的消息。

有没有一种简单干净的方法来设置最上面的项目?

我的列表控件始终处于报告模式。

0 投票
0 回答
151 浏览

listview - Comctl32.dll < 6.0 的列表控件 LVN_ENDSCROLL 仿真

我想在列表控件上使用LVN_ENDSCROLL 消息。

此消息仅在 Comctl32.dll v6.0 上可用。由于各种原因我不能使用它。

有没有可用的解决方法?

实际上我只需要在水平滚动条移动时得到通知,我不需要 LNV_ENDSCROLL 消息的 LPNMLVSCROLL 参数。

0 投票
2 回答
999 浏览

winapi - 强制组合框在上方而不是下方“下拉”

当您点击组合框的“下拉”按钮时,下拉列表框出现在组合框下方,除非下方空间不足,此时列表框出现在上方

现在我想知道是否有可能强制lisbox出现在组合框上方,即使下面有足够的空间。

插图

当我单击组合框时,我希望“下拉”列表框始终显示在左侧屏幕副本的上方。

在此处输入图像描述