Questions tagged [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.
在 .Net 控件中启用“ReaderMode”,PInvoke DoReaderMode API
我想启用“ReaderMode”以在 .Net 中平移/滚动我的控件。我发现最接近的是这个 Win API 函数http://msdn.microsoft.com/en-us/library/bb775599(VS.85).aspx。但是,我不确定如何称呼这个,在它说的文档中,
注意此函数未在任何公共标头中声明。要使用它,您必须从 Comctl32.dll 以序数 383 的形式访问它。
我以前从未调用过没有名称的函数,谁能描述如何在 VB.Net 中执行此操作?
FlatSB_GetScrollInfo 不能位于 ... COMCTL32.dll
我刚刚将一个产品从 C++Builder 2007 升级到 RAD Studio XE,同时更改了一些第三方组件。
现在,当我在 Vista 上运行我的产品时,我收到以下错误:
Project1.exe - 未找到入口点
无法在动态链接库 COMCTL32.DLL 中找到过程入口点 FlatSB_GetScrollInfo。
好的
当我在十六进制编辑器中打开 COMCTL32.DLL 时,我确实找到了 FlatSB_GetScrollInfo 名称。我只在 \Windows\ 文件夹下找到 COMCTL32.DLL 文件,没有本地安装。
有谁知道这可能是什么原因造成的?
我的 Word 加载项的对话框不使用视觉样式
我使用普通的 Win32 API 在 C++ 中编写了一个 Word 插件。它会打开一些对话框,但这些对话框在 Vista+ 上始终显示为没有 commctl6 视觉样式。清单作为 RT_MANIFEST 和资源 ID - 2 就位(如下所示)。当我从我自己的测试应用程序中调用相同的功能/对话框时,视觉样式是可以的。
知道尽管有清单,Word 是如何阻止我的加载项使用视觉样式的吗?
在 .NET 中检测 COMCTL32 版本
如何确定 C# .NET 应用程序正在使用哪个版本的 comctl32.dll?我看到的这个问题的答案通常涉及从 Windows\System 中的物理文件获取版本信息,但由于并行考虑,这不一定是实际使用的版本。
为什么 TVM_GETITEM 消息在 comctl32.ocx 或 mscomctl.ocx 树视图上失败?
我编写了一个函数,它可以产生树视图项的文本,即使树视图位于远程进程中。该函数在远程进程中分配两个内存块,填充 TVITEM 结构(复制到远程进程中),发送 TVM_GETITEM 消息,最后将第二个远程内存块的内容读回本地缓冲区。这是代码:
此代码与您在将WC_TREEVIEW
类名传递给CreateWindow
. 但是,我注意到它不适用于 MS Common Controls v5 (comctl32.ocx) 或 MS Common Controls v6 (mscomctl.ocx) 提供的较新的树。在这些情况下,返回的文本始终为空(缓冲区全为零)。我还注意到 SendMessage 调用返回零(因此// handle error
上面的注释表示的错误处理开始起作用)。我不清楚这是否真的表示错误,无论如何缓冲区都充满了零。
所有其他树视图消息(如 TVM_GETITEMRECT)似乎都运行良好。
有人知道这是为什么吗?我尝试使用 UNICODE 标志(我注意到它TVM_GETITEM
被定义为TVM_GETITEMA
或TVM_GETITEMW
),但这似乎没有帮助。
两次加载 COMCTL32.DLL 时的 GetModuleHandle 和 GetProcAddress
我在一个COMCTL32.DLL
加载了两次的进程中运行,一次使用版本 5.82.7601.17514,一次使用版本 6.10.7601.17514。旧版本由程序链接的某个旧 DLL 加载,而另一个版本由较新的 DLL 加载。
如果我使用GetModuleHandle (L"COMCTL32.DLL")
我无法控制得到解决的 DLL。
GetProcAddress
例如,当我调用reach 时TaskDialogIndirect
,我得到一个空指针,这肯定是因为我得到了遗留DLL 的句柄。
那么,是否有一些方法可以获取地址,比如TaskDialogIndirect
加载两个 DLL 时。
如果没有,我是否可以确保进程加载 6.10 版本而不是 5.82,希望我们的旧版 DLL 可以在较新版本的COMCTL32
?
PinvokeStackImbalance 使用 CallingConvention.Cdecl 调用 comctl32
我们刚刚将我们的项目从 .NET 3.5SP1 升级到 .NET 4.5,现在我们在从 comctl32 调用 DllGetVersion 时获得了 PInvokeStackImbalance MDA。我已经阅读并了解到框架在默认情况下不再能够适应不正确的调用约定。奇怪的是,我们已经指定了 CallingConvention.Cdecl,我认为这是正确的。如果我完全删除 CallingConvention 属性并让它成为默认值 (CallingConvention.WinAPI),我们不会得到 PInvokeStackImbalance。任何人都可以对此有所了解吗?操作系统是 Win 7 64 位,如果有任何区别,它是一个 32 位应用程序。我试过查看 DllGetVersion 函数的头文件,但我不知道调用约定应该是什么。
CreateDialog 失败,但为什么 GetLastError 返回 0?
我正在使用scintilla editor component为我的项目编写编辑器。该编辑器用于内部脚本语言,具有剪切、复制、粘贴等所有基本功能。作为功能之一,我还提供搜索功能。理想情况下,当用户按下Ctrl+F时,它应该显示以下对话框:
但由于某种原因CreateDialog API 失败,但 GetLastError 返回 0。另外请注意,我使用的是Windows Common Controls。
>>创建对话框的代码
>>对话框的资源条目
唯一谈论相同问题的页面是:CreateDialog Failed, but GetLastError return 0。我已经检查了那里提到的解决方案,但在我的项目中我链接到 comctl32.lib。我还检查了我的资源文件和资源头。对话框条目似乎是正确的。
>>常用控件初始化
任何建议/想法都会有所帮助。谢谢。
当复选框控件的 Visible 变为 true 时,comctl32.dll 使用过多的内存
我在 C# .NET 应用程序的运行时向 Windows 窗体添加控件。这些控件中的每一个都与特定信号交互并使用来自该信号的一些数据——信号名称、描述、来源、单位、值等。
这些控件上有一个复选框。当其中一个信号的复选框的 Visible 属性变为 true 时,我的应用程序的已提交内存将超过 800MB。其他数百个信号都没有问题。
我使用 DebugDiag 工具得知 comctl32.dll 正在分配 805.45 MBytes。尤其:
- 函数 comctl32_72380000!CCHeapAllocArraySize+3a
- 分配类型 堆分配
- 堆句柄 0xf37893cd
- 分配计数 1 个分配
- 分配大小 803.20 MB
- 泄漏概率 16%
我的下一个故障排除步骤应该是什么?哪些工具可以提供帮助?
更新: 我将问题跟踪到父控件上的 System.Windows.Forms.TrackBar。轨迹栏的最大值超过 200,000,000。当我将最大值降低到 100,000,000 时,它使用了大约一半的内存。将最大值设置为 1,000,000 左右会使用更合理的内存量。
C#:调试器中的 comctl32.dll 版本 6
我正在为 TaskDialog 使用WindowsAPICodePack。当我尝试显示对话框时,它说它需要加载 comctl32.dll 的版本 6。所以我将版本 6 添加到 app.manifest 并尝试运行它。仍然没有运气。我去了 Debug 文件夹并在没有 Visual Studio 的情况下运行程序,它工作正常。我猜 Visual Studio 没有使用清单文件……我想知道是否有办法让它做到这一点。