问题标签 [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 投票
1 回答
2308 浏览

c - GCC Win32 API 与 ComCtl32 的链接问题

我无法使用 GCC (MinGW) 让 Comctl32.lib 与我的程序链接。

海合会输入:

GCC 输出

main.c 中的相关代码

感谢您提供的任何帮助或信息。我已经在这太久了,只是无法想出一个答案。

0 投票
2 回答
783 浏览

winforms - TaskDialog 更改按钮语言

我使用Vista TaskDialog Wrapper 和 Emulator for WindowsForms。

它工作正常,但我怎样才能更改按钮的语言?

0 投票
1 回答
3157 浏览

c - 如何为 Win32 应用程序启用工具栏的现代外观?

最近开始学习基于 Win32 API 的 GUI 编程。当我将工具栏控件(来自comctl32.lib)添加到我的简单应用程序时,我发现它看起来很平坦,而菜单栏具有更多“Windows 7 友好”的 3D 外观和感觉(顶部的白色发光和从上到下的垂直灰色渐变)。差异使它看起来有线。

默认工具栏样式

但是,我发现许多其他应用程序的菜单栏和工具栏的外观和感觉都是一致的。例如。记事本++记事本 2

记事本++ 记事本 2

我已经阅读了一些官方文档并尝试了解决方案,例如Visual Styles OverviewEnabling Visual Styles,但是它只启用了平面按钮样式(与旧的Win98实体按钮样式相比)。这与我在第一张照片中得到的风格没有区别。

我试图阅读 Notepad++ 的源代码。找到ToolBar.cpp并相应地对我的代码进行了一些更改,但没有任何改变。我想我迷失在代码库中。

这是我调用InitCommonControlsEx和创建工具栏的代码。

所以,问题是:尽管有按钮的位图,但我怎样才能获得工具栏的 3D 外观,就像 Notepad++/Notepad2 示例一样?

提前致谢。

0 投票
1 回答
938 浏览

visual-studio-2012 - mfc 11 应用程序旧式按钮和进度条

我刚刚将一个 vs2010 mfc 应用程序更新到 vs2012,我遇到了新的闪亮样式窗口按钮和进度条没有出现的问题,它们显示为 Windows 2000 样式按钮。

我的 stdafx.h 文件中有以下代码:

我正在打电话InitCommonControlsEx,据我所知,我不需要清单文件来显示新样式。有任何想法吗?

0 投票
0 回答
491 浏览

c++ - 创建没有视觉样式的通用控件

我使用标准应用程序清单在我的窗口控件中启用视觉样式(也就是说,我使用的是 comctl32.dll v6)。

现在出于某种兼容性原因,我希望在没有视觉样式的情况下创建一些特定的工具提示控件。使用 CCM_SETVERSION、SetWindowTheme(m_hWnd,"","") 甚至 SetThemeAppProperties(0) 关闭它的视觉样式并不能解决我的问题

我需要的是加载旧的 v5.x comctl32.dll 并使用它来实例化那个特定的工具提示控件。假设混合 v5 和 v6 控件是完全允许的,但我发现的所有示例都适用于应用程序没有清单的前提,并展示了如何使用激活上下文来强制使用 v6 的常用控件。我想要相反的,那就是 force v5。

我找不到任何可用于实例化旧版本的 v5 清单(在本示例中使用 CreateActCtx )。由于旧的 comctl32.dll 只是在 SYSTEM32 文件夹中,而不是在 winSXS 中,它应该很容易使用,但是如何使用呢?

谢谢,尼科斯

0 投票
2 回答
2480 浏览

comctl32 - Windows 8 comctl32.dll 访问冲突

我在 Windows 8 上遇到以下异常。但是它适用于 Windows 7 环境。看起来这个异常是由 comctl32.dll 引发的。我已经完成了下面的问题,工具提示与组合框无关。

工具提示上的 AccessViolationException 导致 COMCTL32.dll 出错 - .NET 4.0

应用程序:Application.exe 框架版本:v4.0.30319 描述:进程因未处理的异常而终止。异常信息:System.AccessViolationException

0 投票
3 回答
1046 浏览

c++ - 添加 syslink 不显示 mfc 对话框

起初将 syslink 添加到我的对话框中,阻止它打开。我被要求在我的代码中添加以下行以显示带有“Syslink”控件的对话框。

当我将此行添加到我的 VS 项目时,它运行良好。这行代码意味着什么?

其次,当我在另一个项目的 .rc 文件和 resource.h 文件中为对话框和 syslink 控件添加相同的代码时,当我使用 make 文件编译它时,我遇到了同样的问题。但是这次我添加了#pragma 注释行。(仅供参考 - 如果我从 rc 文件中删除 syslink 控件,则对话框工作正常)。可能是什么问题呢 ?

0 投票
1 回答
423 浏览

winapi - ILC_COLOR32 图像列表中的图像是否预乘了 alpha?我收到相互矛盾的信息

这里非常简单的问题:ILC_COLOR32图像列表是否经过 alpha 预乘?Stack Overflow 上的各种问题,比如这个,暗示它们是;然而,这个 wxWidgets 错误表明并非如此。微软实际所说的唯一ILC_COLOR32用于 alpha 混合图像列表条目的地方没有说(所有ILC_COLOR32的文档都说它是一个“32 位 DIB 部分”,如果我BITMAPINFOHEADER正确理解文档, 技术上不包含 alpha 信息;每种颜色的前 8 位被忽略)。谢谢!

0 投票
0 回答
225 浏览

c - 定位/重新定位/调整大小/调整大小/上下移动控件的正确方法是什么?正确的尺寸是多少?应该是哥们的孩子吗?

这是一个躲避谷歌搜索,部分原因是“位置”一词适用于屏幕上的位置(这就是我正在谈论的)和上/下控件的当前位置(可能应该被称为当前值和哪个不是我要说的)。

如何设置上/下控件的正确位置和大小?文档对此非常模糊:它说UDS_ALIGNLEFT/UDS_ALIGNRIGHT样式会自动重新定位和调整伙伴窗口的大小,但这似乎只发生在控件创建时。MSDN 上也给出的示例代码说要给出上下位置 (0, 0) 和大小 0x0,但同样,这似乎只影响窗口创建。这个窗口创建尤其成问题,因为我在创建窗口后使用UDM_SETBUDDY.

更奇怪的是,Windows 布局页面(包括当前的 Vista+ 页面、MMC 首选尺寸页面和旧版Microsoft Windows 用户体验手册)并没有指定向上/向下控件的正确大小!

我确实尝试仅移动/调整伙伴窗口的大小,但没有跟随上下控制。我尝试仅移动/调整上下控件的大小,但整个上下控件都设置为给定大小,而伙伴控件没有跟随。我尝试移动/调整伙伴窗口的大小,然后将上下大小设置为 0x0 并将位置设置为 (0, 0) 但这也不起作用。

或者,我是否需要将伙伴窗口设置为上下控件的父级才能正常工作?或者那行不通?

我正在使用 Common Controls 6 并在 Windows XP 和 wine 上进行了测试。

谢谢。

更新

事实证明,设置 (0,0)/0x0 确实有效,即使是UDM_SETBUDDY- 但只是第一次。我不确定这是否意味着“第一个时间段”或“第一次设置唯一的好友”。反复设置同一个伙伴UDM_SETBUDDY在 Windows XP 上不起作用(虽然它在 wine 中起作用,所以也许我应该再试一次......)。

我的问题是我在调整大小时确定了控件的正确大小(因为我使用 DLU 计算)。在创建时具有固定的宽度/高度也无法正确处理可能影响 DLU 到像素转换(DPI 更改、字体更改等)的设置在程序执行期间发生更改的情况。

我开始怀疑我是否应该每次都重新创建 updown,但这听起来不必要地昂贵,我宁愿把它保存起来以备不时之需。

0 投票
1 回答
223 浏览

c - 我的子类化 Common Controls 工具提示是否会在 WM_DESTROY 中自行销毁?

下面的程序创建了一个带有子类的通用控件工具提示的窗口。当我得到 aWM_DESTROY时,我本能地决定销毁工具提示,因为WM_DESTROY在子窗口(我也假设拥有)窗口被销毁之前出现,但DestroyWindow()失​​败,返回最后一个错误 1400(ERROR_INVALID_WINDOW_HANDLE)。(在 wine 上,它返回 5 ( ERROR_ACCESS_DENIED)。我假设这是 wine 错误设置最后一个错误或根本没有设置的错误;​​我可以稍后提交一个。)

我已经在 Windows XP 32 位和 Windows 7 64 位上进行了测试,包括 Common Controls 5 和 6(下面使用了命令行“标志”),以及 Ubuntu 14.10 和 15.04 beta 上的 wine。

如果工具提示正在破坏自己,我该怎么做才能处理它?我应该只依赖这种行为吗?还是我应该将工具提示子类化并WM_DESTROY自己处理?(两个窗口相互继承会导致问题吗?)

谢谢。