问题标签 [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.

0 投票
0 回答
82 浏览

vb.net - 禁用的 VisualStyles 可见的 ListViewGroup

我写了一个 .net-DLL (vb.net),其中包括一个 Windows-Form。Windows 窗体包括一个 ListView。ListView 在视图“详细信息”中工作,并有一些 ListViewGroups。

当我在我的一个 .net 应用程序中使用 Windows-Form 和 ListView 实现 DLL 时,一切都很好,因为我可以打开 VisualStyle。所以我在 ListView 中看到了 ListViewGroups。

但现在我想在“其他项目”(不要问)中实现 .net-DLL,我无法打开 visualStyle。(我认为视觉风格在“其他项目”中被关闭)。我无法更改“其他项目”。

所以,我的问题是:我可以用 .net-DLL 或 ListView 做些什么,ListViewGroups 是可见的还是他们不记录视觉样式被禁用?也许有些东西覆盖或过载?

谢谢。

0 投票
2 回答
1611 浏览

winapi - 作为选项卡页的对话框与它所属的选项卡控件具有不同的背景颜色

我正在创建一个带有选项卡控件的对话框。每个选项卡都应该显示不同的控件集,因此我在资源编辑器中创建了子对话框以表现得像页面。

我已经使用这篇文章中的说明来做到这一点。

在资源编辑器中,我制作了没有边框的对话框,将它们的样式设置为Child,删除了系统菜单,并设置了标志Control和。Control Parenttrue

在我的子对话框程序中,我WM_INITDIALOG通过添加EnableThemeDialgTexture(handleOfmyDialog, ETDT_ENABLETAB);和返回TRUE. 否WM_ERASEBKGNDWM_PAINTWM_CTLCOLORDLG已被覆盖。

在包含选项卡控件的主对话框中,我创建了具有CreateDialog功能的“子对话框”,并习惯于MoveWindow正确定位它们。

我没有用来销毁orEndDialog上的“子对话框” ,我认为它们会自动销毁。IDCANCELWM_CLOSE

我已经在 Windows 8.1 上使用 Visual Studio 2013 来完成这一切。

在 Windows 7 和 Windows 8.1 上似乎没有问题,但也许我的眼睛在和我开玩笑,因为选项卡控件的背景颜色与对话框的默认背景颜色相似。该问题在 Windows XP 上最为明显,如下图所示:

在此处输入图像描述

如何使“子对话框”(及其子控件,如复选框/轨迹栏/单选按钮/静态控件)的背景颜色透明(与选项卡控件的背景颜色匹配)?

谢谢你。

0 投票
1 回答
2429 浏览

c++ - 调整窗口大小时,公共控件未正确绘制

介绍:

我正在创建带有子对话框作为页面的选项卡控件。

我已Visual Styles通过#pragma评论启用。我也打过InitCommonControlsEx电话#pragma comment( lib, "comctl32.lib" )

最初,当窗口加载时,对话框及其常用控件具有适当的背景,请参见下图:

在此处输入图像描述

在调整大小的过程中,事情并不是那么一致 -> 背景开始明显不匹配。我将在下面提供截图:

在此处输入图像描述

您可以清楚地看到这一点checkbox并且static control背景不正确,而在我看来dialog box(创建为子控件)具有适当的背景。

2014 年 11 月 24 日编辑:

将控件封闭后group boxes似乎没有绘画问题。我的显示器是旧的 CRT(Samsung SyncMaster 753s),我的视力不好,但似乎一切正常。窗口在调整大小时仍然可怕地闪烁,但我已尽我所能修复它。

问题:

我怎样才能解决这个问题?

我为解决这个问题所做的努力:

我还没有找到任何东西,但我在输入这个问题时仍然在盯着看......

相关信息:

以下是创建说明问题的演示的说明:

1.)在中创建空C++项目Visual Studio

2.)添加头文件,命名pomocne_funkcije.h并复制/粘贴以下内容:

3.) 在资源编辑器中创建对话框,添加复选框静态控件。

为对话框设置以下内容:

  • 边框:无
  • 控制:真
  • 控制父级:真
  • 风格:儿童
  • 系统菜单:假

4.)这是代码main.cpp

Visual Studio 2008正在Windows XP使用C++and WinAPI

0 投票
1 回答
404 浏览

delphi - TSaveDialog 失败,客户端视觉样式被禁用

我正在尝试TSaveDialog在 Delphi XE6 中使用 a:

该调用立即返回false,而不显示任何对话框。我将其追溯到创建 shell Save Dialog COM 对象的行为:

调用CoCreateInstance失败。我创建了最少的代码来重现该问题:

它抛出EOleSysError异常:

0x80040111:ClassFactory 无法提供请求的类,ClassID:{C0B4E2F3-BA21-4773-8DBA-335EC946EB8B}

我的应用程序使用的是 Common Controls 库的第 6 版(6.0.7601.18837),但我意识到只有当用户为我的应用程序禁用视觉样式时才会发生这种情况:

在此处输入图像描述

我们仍在使用公共控件库的版本 6,只是IsAppThemed返回 false。

注意:我知道很多人错误地认为:

  • Visual Styles API 仅在我们加载了版本 6 的 Comctrl32.dll 时才有效
  • 如果加载了 Comctrl32.dll 版本 6,则 Visual Styles API 将起作用
  • 如果我们没有使用 ComCtrl v6,那么这意味着视觉样式被禁用
  • 如果我们使用旧的通用控件库,视觉样式将被禁用

蛮力解决方案是将全局UseLatestCommonDialogs设置为 false。

但这很糟糕,因为它只适用于在他们的应用程序中禁用了视觉样式的人:

  • 该对话框继续在没有视觉样式的操作系统上工作(例如 Windows Server 2008 R2)
  • 对话框在关闭视觉样式的情况下继续工作(例如,关闭视觉样式的 Windows 7)

这意味着我不能简单地使用IsAppThemed,因为如果IsThemeActive为假,它也会返回假。

我想我要问的是如何检查Disble Visual Styles兼容标志的状态。

我真正要问的是如何TSaveDialog在 Delphi 中正确地工作(并不暗示读取 compat 标志是解决方案的一部分)。

0 投票
2 回答
1371 浏览

.net - 为什么我的 vb.net 标题栏是白色的

出于某种原因,当我设计我的 Windows 应用程序时,表单大纲/标题栏是蓝色的,但是当应用程序运行时,它会变成白色。为什么它会这样做,我如何让它显示所有 Windows 应用程序的正常颜色?我不喜欢白色,因为我觉得它使应用程序看起来很便宜。我在 Windows 10 Pro 上使用 Visual Studio 2015 社区。设计器中的表格图片以及它正在运行时的图片。

我真的很感激在这方面的一些帮助,谢谢。

窗体

0 投票
0 回答
600 浏览

c# - 如何绘制与 System.Windows.Forms.TextBox 相同的框架

在 WinForms 中如何绘制与System.Windows.Forms.TextBox控件相同的框架?

我尝试使用VisualStyleRendererVisualStyleElement.TextBox.TextEdit.Normal参数,但它绘制了一条奇怪的灰线。

VisualStyleElement.Button.PushButton.Normal按钮正常工作。它像按钮一样绘制脸部,但TextBox它绘制了一条灰色线边框。

我使用了以下代码:

看截图。

左侧是编辑和按钮控件。

右边是绘制的内容VisualStyleRenderer.DrawBackground

在此处输入图像描述

0 投票
0 回答
320 浏览

c# - WinForms - 使用视觉样式绘制大 DPI 复选框/单选按钮等(航空玻璃外观)

我正在尝试找到某种方法在 WinForms 中使用视觉样式绘制大 DPI UI 字形。例如,如果我在 windows 中将 DPI 设置为 100%,无论我如何尝试绘制样式单选按钮,它最终都会看起来像这样:WinForms 单选按钮 100% DPI如果我在 windows 中将 DPI 增加到 150%,单选按钮看起来不错和大:WinForms 单选按钮 150% DPI

我找不到任何方法来绘制上面的大 DPI 单选按钮,而不更改 Windows 用户配置文件范围的 DPI 设置。我不想在任何其他应用程序中使用大型 UI 元素。到目前为止,这是我尝试(不成功)的事情:

  • 表单的 AutoScale* 属性 - 不影响 UI 字形大小
  • 调用 UI 字形绘制例程之前的 Graphics.ScaleTransform() - 如果启用了视觉样式,则不会影响 UI 字形大小
  • ControlPaint 方法 - 允许我绘制缩放的 UI 字形,但只能没有视觉样式 ( WinForms 单选按钮没有视觉风格)
  • 直接使用 VisualStyleRenderer - (据我所知)无法更改绘制的 UI 字形大小

我要避免的解决方案:

  • 在可执行文件中嵌入预渲染的 UI 字形 - 我需要我的应用程序遵循所选的 windows 用户配置文件范围的视觉样式,因此这种方法很快就会变得非常复杂且难以维护,因为未来的 windows 版本将添加不同的视觉样式。
  • 切换到 WPF - 客户端需要 WinForms 并且所涉及的重构量将是荒谬的(这是一个相当大的应用程序)

那么考虑到上述两个限制,有什么办法可以做到这一点?也许以某种方式欺骗 VisualStyleRenderer 或以某种方式强制 DPI 用于单个进程?欢迎任何想法、提示和 WinAPI hack。

0 投票
2 回答
526 浏览

c# - 没有 EnabledVisualStyles() 的选框进度条

我正在使用非托管 EXE 开发 .NET 解决方案。这意味着,我没有启用 VisualStyles。

我正在尝试在不使用 EnabledVisualStyles() 的情况下使用选取框进度条。发生的事情是我的进度条没有任何动画出现。

矿:

在此处输入图像描述

应该是这样的:

在此处输入图像描述

你知道这是否可能吗?有什么解决方法吗?

0 投票
1 回答
1027 浏览

c# - 仅针对单个表单禁用/关闭视觉样式/主题

我有一个winforms应用程序。主窗体有一些按钮可以在单击时打开其他窗体。

有一个表单我想禁用视觉样式/主题。我也想为其子级禁用视觉样式。可能吗?如果有怎么办?

例如,假设我在主窗体上有三个按钮:

  • Button1form1点击打开
  • Button2form2点击打开
  • Button3form3点击打开

因此,当我单击时,我Button2只想禁用其上的视觉样式,但我想保持为表单启用视觉样式:form1form3.

0 投票
1 回答
108 浏览

c++ - Visual Studio 从 2005 升级到 2015,C++ GUI 保留 XP 主题而不是系统主题

我最近将一个项目从 VS2005 迁移到 VS2015。在这样做时,我的项目现在拒绝使用系统外观并使用 windows 98 外观。在 2005 年建造时,它确实使用了系统外观。

描述对话框的.rc文件与我复制并粘贴原始文件的文件相同。属性都是一样的。

我四处搜索,一种可能性是 FlatStyle 属性,它可以设置为系统,但是我的对话框都没有这个属性。

此外,我已经查看了这个并尝试了这些建议,但似乎没有一个有效。

我相信这个问题是我必须在 2015 年禁用的设置,以便应用程序适应系统的外观和感觉。

那么如何让我的应用适应当前的系统呢?

下面是一个对话框示例:

STYLE DS_SETFONT | DS_3DLOOK | DS_CENTER | WS_MINIMIZEBOX | WS_POPUP | WS_CAPTION | WS_SYSMENU | WS_THICKFRAME EXSTYLE WS_EX_ACCEPTFILES | WS_EX_APPWINDOW