问题标签 [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.
c - 使用 GWL_WNDPROC 子类化 Richedit 的问题
我对edit和richedit都做了同样的事情,但是对于后者,存在访问冲突,为什么?为 tabctrl 完成时也会发生同样的事情。我究竟做错了什么?我怎样才能让它工作?
我正在使用 vc++ 6。
提前致谢。
c++ - 如何从通用控件对话框挂钩中获取对 Win7 库的引用?
我正在实现一个在 Windows 7 上OFNHookProc
检测一个通用控件GetOpenFileName()
对话框。我的检测是用 C++ 编写的。在用户选择库(如文档或图片)之前,一切正常。发生这种情况时,我会收到CDN_FOLDERCHANGE
预期的通知,但是当我向对话框发送CDM_GETFOLDERPATH
消息以检索新选择的文件夹时,我收到错误返回 -1,CommDlgExtendedError
返回 0。在某些方面,这是有道理的,因为它是不是文件夹,但其他消息似乎都不起作用(如CDM_GETFOLDERIDLIST
或CDM_GETFILEPATH
)。
那么,您如何判断OFNHookProc
当前选定的项目或文件夹是一个库?一旦您知道它是一个库,您如何获得它的接口IShellItem
或IShellLibrary
接口,以便您可以确定哪些文件系统文件夹构成了该库?
(创建GetOpenFileName
对话框的代码是遗留代码,所以我不能用 Windows-7 推荐的IFileOpenDialog
界面替换它,该界面以理智的方式支持库)。
windows - 在 CHOOSECOLOR 对话框中更改字体
我正在使用 Windows 常用控件CHOOSECOLOR对话框,但在 Win 7 上它像拇指酸痛一样突出,因为它仍然使用“旧”Tahoma 字体。
有没有一种相当简单的方法让它使用 Segoe UI 或其他字体?
如果重要的话,我正在使用 Delphi/C++Builder ...
visual-studio - 在保留通用控件功能的同时禁用清单中的视觉样式
我使用的是纯 WINAPI,需要发送TB_GETMETRICS消息。但是,仅当您将清单文件添加到应用程序并引用 Common Controls 6.0 版时,该消息才有效。我添加了它,消息正在运行,但现在我的应用程序正在使用 Vista/Windows 7 视觉样式,这是我不想要的。
有没有办法在使用经典主题时保留 Common Controls 6.0 参考,无论是通过修改清单文件还是通过调用一些 API 函数?
注意:我尝试了SetWindowTheme,但结果是 Classic 和 Aero 的混合。
编辑:我没有正确阅读 SetWindowTheme 函数,所以我想为父 hWnd 调用它会自动为其所有子调用它。事实证明,我需要为每个要使用 Windows Classic 的控件调用它。它现在可以正常工作。
delphi - 带有 alpha 混合图标的图像列表失去透明度
这是(或多或少)一个相关问题:Delphi - Populate an imagelist with icons at runtime 'destroys' contrast。
我已经测试了@TOndrej答案。但似乎我需要启用视觉样式(XP Manifest)才能使其正常工作(将使用 Windows 通用控件的 6.0 版 - 我现在不想要)。我在运行时通过ExtractIconEx
和添加图标ImageList_AddIcon
。
显然设置ImageList.Handle
为使用系统图像列表句柄,不需要XP 清单。因此,当我使用系统图像列表显示文件列表(带有TListView
)时,即使是我在 D3 中写回的旧程序也会正确显示 alpha 混合图标。
我在徘徊系统图像列表有什么特别之处,它是如何创建的,所以它在所有情况下都支持 alpha 混合?我想不通。这是一些示例代码:
禁用视觉样式:
启用视觉样式:
一种解决方法是使用插入器类或子类TImageList
并覆盖DoDraw
,如此处所示,但我真正想知道的是如何创建与系统图像列表相同的图像列表。
注意:我知道TPngImageList
并且不想在这种情况下使用它。
编辑: @David 的回答(和评论)是准确的:
您必须显式链接到 ImageList_Create (v6),否则它会在模块加载时隐式链接并绑定到 v5.8
示例代码(不使用激活上下文 API):
Edi2:@David 的示例代码,显示了它是如何通过 Activation Context API 正确完成的。
c++ - ComboBox 子类化列表框
出于某些自定义原因,我正在尝试对组合框的列表框和编辑控件进行子类化。下面是代码工作。编辑控件的子类化工作完美,但列表框没有收到 MouseDown 的消息。
listview - ListView 中的 ListItems 带有空文本
我有一个旧的 VB6 程序,它有一段时间没有改变,但现在有了新的行为。我在想一个通用组件是从它下面升级的。这是详细信息。
我在 SmallIcon 模式下有一个标准的 ListView 控件。代码片段:
添加的大多数 ListItems 都有一个 SmallIcon 和一个 Caption(文本)。TextBackground 设置为不透明,这意味着文本呈现在封闭的彩色矩形中。
有些项目可能没有提供标题,或者用户可以更改它以使没有标题。这曾经很好,只显示 SmallIcon。但是现在任何具有空 Text 属性的 ListItem 都会呈现一个相当宽的封闭矩形,其中没有文本(好像用户可能键入了一堆空格)。
添加 ListItem 的代码很简单:
我在这里停止了调试器,并在即时窗口中尝试了以下操作:
如您所见, ListItem.Width 会正确重新计算,直到 Text 变为空,然后跳转到 96 像素。
有谁知道有什么方法可以弥补这种行为?我可以使用一些 Windows 消息来配置默认的空 wdith?有关更改 ListView 行为的任何信息也可能会有所帮助。
c++ - 如何永久更改 ListView 中项目的颜色?
我已经创建了一个列表视图
我使用 LPNMLVCUSTOMDRAW 插入颜色项目
getcolor 是函数响应 colorref。每个项目都有自己的文本颜色。但是当父窗口隐藏并再次显示时,项目颜色会发生变化。那么如何保持它不改变或者我们有另一种方法来设置文本颜色
还有一个我通过这种方式创建了一个新的列表视图项目(以防有人需要它)