问题标签 [visual-styles]
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.
wpf - 在 WPF 托管的 ListView 中启用组
我在 WPF 应用程序中托管了一个旧的 Winforms 控件。控件利用了System.Windows.Forms.ListView
内部,而这个 ListView 使用了 Groups 功能。
问题是当由 WPF 托管时,此控件不显示组。当 ListView 由 Winforms 应用程序和 WPF 应用程序托管时,我已经手动比较了它的属性。对于这两个 ListViewsShowGroups
属性都是 true。
但是,有一个名为的属性GroupsEnabled
,当控件托管在 Winforms 中时它是 true,而当它托管在 WPF 中时它是 false。我在这里找到了定义:
VirtualMode
两者都为假,但ComctlSupportsVisualStyles
Winforms 托管为真,WPF 应用程序为假。来自同一来源的代码
:ComctlSupportsVisualStyles
我想我需要以Application.ComCtlSupportsVisualStyles
某种方式在我的 WPF 代码中进行设置。
这一定是System.Windows.Forms.Application
而不是System.Windows.Application
。
有什么办法吗?
windows - 在 Windows 上绘制主题组合框
我尝试CBS_DROPDOWNLIST
使用DrawThemeBackground
. 我提供了 part CP_READONLY
,它显然绘制了一个主题组合框的背景:
但是,它不包含下拉箭头。所以,我尝试用以下方式自己绘制箭头:
但是上面在组合框背景上绘制了以矩形为中心的箭头,包括边框,所以我不能在组合框内没有边框(它本身已经有边框)的情况下使用它。我使用主题资源管理器来验证箭头是否始终位于带边框的背景上。
本质上,我的问题是:如何在适当的位置绘制背景和箭头以模拟普通 Windows 组合框的外观?
到目前为止我发现了什么:
我可以指定一个剪裁矩形来剪掉上述边框。但这提出了确定确切位置矩形和剪切矩形的问题:似乎我可以
GetThemeMargins
用来确定边距,但这并不能告诉我箭头整体有多大。GetThemeBitmap
可能有助于确定箭头的确切大小,但正如我在此处阅读并在我的机器上确认的那样,使用它TMT_GLYPHDIBDATA
并不能像宣传的那样工作,如果可能的话,我希望没有任何变通方法。
.net - 检查 WinForms 应用程序是否使用 OS 视觉样式呈现
我们有一个在 .NET 1.x 时代编写的旧版 WinForms 应用程序,可能需要更改检查应用程序是否使用操作系统视觉样式呈现的代码,原因如下所述。执行此工作的当前函数如下所示:
此代码中的 NativeMethods 是一个类,其中包含所有引用的 WinAPI 函数和常量的 P-Invoke 声明。
我们希望在此代码中避免与平台无关的调用,因为它们似乎与 Mono 平台的最新版本不兼容。没有操作系统本机调用,是否有更好更短的方法来检查我们需要什么?如果我们可以仅使用本机 .NET 类来做到这一点,那就太好了。支持的 .NET 的最低版本应该是 2.0 甚至 3.5。
winapi - Windows 资源管理器悬停和选择的视觉样式
Windows 的最后三个版本都在 Windows Explorer 列表视图中具有半透明的高亮和悬停效果:
使用主题资源管理器,我看到 ListItem 没有与我在 Windows 中看到的状态相匹配的状态:
有没有:
- 班级
- 部分
- 状态
代表Windows中的ListView?
c# - C# WinForms 中的视觉样式
我在 C# WinForms 应用程序中遇到 VisualStyles 问题。我已使用 Application.EnableVisualStyles(); 行启用 VisualStyles;一切都在我的开发 PC 上运行(运行 Windows 10 v1709)。
但是,当我在生产 PC 环境(Windows 10 v1607)上运行完全相同的 .exe 时,VisualStyles 消失了,应用程序的外观看起来很旧。
请参阅此图像,应用程序看起来有何不同:
如何修复以使 VisualStyles 始终正确显示?目标机器始终是 Windows 10。非常令人不安的是,我已经测试过使用 VisualStyles 做一个 Hello World WinForms 应用程序,并且只是在生产 PC 上测试运行它,而 VisualStyles 在两台 PC 上都适用于该 Hello World 应用程序。所以这个问题似乎存在于我的生产 PC 和我的主要应用程序的组合中。
.net - 从 Graphics 对象获取 uxtheme.dll DrawThemeParentBackground 的 hwnd
我正在处理一些用于在 WinFroms 应用程序中绘制部分样式系统控件的旧绘图代码。完成这项工作的核心例程之一如下所示:
原来DrawThemeParentBackground函数失败了。它返回错误代码 0x80070006 (E_HANDLE),表示“无效的句柄”。看来,这是因为使用先前的WindowFromDC API 调用检索到的零窗口句柄。
有没有办法从传递给此函数的 Graphics 对象中获取正确的 hwnd 以将其传递给DrawThemeParentBackground
?我知道我可以通过窗口句柄从外部调用代码中绘制,但这需要重写该项目的大部分基础设施。所以我正在寻找这个问题的简单解决方案,而无需重写太多代码。
windows - 使用 Windows 视觉样式绘制的按钮周围有额外 1 像素的边距
我们的一个遗留项目使用 API 调用来使用操作系统的当前视觉样式绘制自定义控件(可以在我问的这个问题中找到一些代码)。我们检测到经典按钮是用 1 像素的缩进绘制的,而不是占据整个指定的矩形。例如,如果我们需要一个 17x17 像素的按钮:
,实际上我们得到了一个 15x15 像素的按钮:
其他类似的控件(如组合按钮)完全按照请求的大小绘制:
我们的目标是绘制按钮以占据整个指定的矩形。是的,我确实知道,如果我们使用视觉样式进行绘制,那么周围的空间可以用于主绘制控件的半透明效果,但是我们所有的检查都确认这个 1 像素的边距根本没有被使用——无论是在 Windows 10 中还是在 Windows 7 中。最简单和“粗鲁”的解决方案是指定一个膨胀 1 个像素的矩形来绘制按钮,但如果在 Windows 中的视觉样式的未来实现中发生某些变化,这种方法可能会发生冲突。
所以问题是:我们能否以编程方式检测以当前视觉样式绘制的按钮使用边距,因此我们可以在指定矩形以绘制按钮时考虑到这一点?
一个主意。也许,我们可以从请求低级视觉样式部件属性的 API 调用中获取这些信息,如下所示:
额外信息。这是在 Windows XP 中使用 Silver Luna 主题绘制在 17x17 像素矩形中的组合按钮和普通按钮的屏幕截图:
如您所见,两个按钮都以给定的大小精确绘制:
下面您会看到在 Windows 7 中使用相同代码绘制的相同按钮:
现在右边的按钮占据了一个 15x15 像素的矩形。
vb.net - 尝试将 VisualStyler.ApplyExcludeTag() 方法应用于选项卡控件时出现警告 BC42025
我尝试将SkinSoft.VisualStyler.ApplyExcludeTag(control As Control, childControls As Boolean)方法应用于 Tab Control 以禁用此控件的 Skin,如下代码所示:
我收到了这个警告:
BC42025:通过实例访问共享成员、常量成员、枚举成员或嵌套类型;将不评估限定表达式。
如何禁用此警告?
user-interface - 如何为 MFC 功能区创建新的视觉样式?
该应用程序默认使用 Windows 7 功能区样式:
我想创建一个新的视觉样式,我在其中实现了不同的颜色,所以我创建了CMyVisualStyle
继承自CMFCVisualManagerOffice2007
. 这是.h:
这是.cpp:
我在 mainframe.cpp 中编辑了这个:
但似乎RUNTIME_CLASS
找不到我的类,错误:编译器错误 C2653 '标识符':不是类或命名空间名称语言语法在此处需要类、结构、联合或命名空间名称。
更新:我包括了MyVisualStyle.h
它并修复了错误。但它似乎并没有改变我的功能区栏的视觉风格。
c# - 绘制 Windows 10 字幕按钮的问题
我在使用 VisualStyleRenderer 类绘制 Windows 10 主题的窗口标题按钮时遇到问题。
我的问题是我不知道要使用哪个主题类。我试过了Window
,CompositedWindow::Window
但是,没有一个真正包含 Windows 10 主题按钮,因为我发现使用这个 msstyle 编辑器。
哪个主题类包含 Windows 10 主题标题按钮?
现在的样子:
我希望它看起来如何:
我如何绘制按钮: