如何在没有清单的情况下启用视觉样式

2024-05-11

根据docs http://msdn.microsoft.com/en-us/library/bb773187.aspx:

“如果您希望应用程序使用 ComCtl32.dll 版本 6,则必须添加应用程序清单或编译器指令指定应使用版本 6(如果可用)。”

注意到上面的逻辑“或”了吗?那么这个神秘的编译器指令是什么?

我有一个本机 Win32 C++ 应用程序,它完全包含在单个 .cpp 文件中。没有资源文件、清单文件等。我想保持这种状态,但我也想使用视觉样式。


实际上还有第三种方法没有任何表现,虽然它相当hacky:

#include <windows.h>

// NOTE: It is recommended that you delay-load ComCtl32.dll (/DelayLoad:ComCtl32.dll)
// and that you ensure this code runs before GUI components are loaded.
// Otherwise, you may get weird issues, like black backgrounds in icons in image lists.
ULONG_PTR EnableVisualStyles(VOID)
{
    TCHAR dir[MAX_PATH];
    ULONG_PTR ulpActivationCookie = FALSE;
    ACTCTX actCtx =
    {
        sizeof(actCtx),
        ACTCTX_FLAG_RESOURCE_NAME_VALID
            | ACTCTX_FLAG_SET_PROCESS_DEFAULT
            | ACTCTX_FLAG_ASSEMBLY_DIRECTORY_VALID,
        TEXT("shell32.dll"), 0, 0, dir, (LPCTSTR)124
    };
    UINT cch = GetSystemDirectory(dir, sizeof(dir) / sizeof(*dir));
    if (cch >= sizeof(dir) / sizeof(*dir)) { return FALSE; /*shouldn't happen*/ }
    dir[cch] = TEXT('\0');
    ActivateActCtx(CreateActCtx(&actCtx), &ulpActivationCookie);
    return ulpActivationCookie;
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在没有清单的情况下启用视觉样式 的相关文章

  • 使用 gcc 在 Linux 上运行线程构建块 (Intel TBB)

    我正在尝试为线程构建块构建一些测试 不幸的是 我无法配置 tbb 库 链接器找不到库 tbb 我尝试在 bin 目录中运行脚本 但这没有帮助 我什至尝试将库文件移动到 usr local lib 但这又失败了 任何的意见都将会有帮助 确定您
  • WPF DataGrid 多选

    我读过几篇关于这个主题的文章 但很多都是来自 VS 或框架的早期版本 我想做的是从 dataGrid 中选择多行并将这些行返回到绑定的可观察集合中 我尝试创建一个属性 类型 并将其添加到可观察集合中 它适用于单个记录 但代码永远不会触发多个
  • 如何将 std::string& 转换为 C# 引用字符串

    我正在尝试将 C 函数转换为std string参考C 我的 API 如下所示 void GetStringDemo std string str 理想情况下 我希望在 C 中看到类似的东西 void GetStringDemoWrap r
  • 在模板类中声明模板友元类时出现编译器错误

    我一直在尝试实现我自己的链表类以用于教学目的 我在迭代器声明中指定了 List 类作为友元 但它似乎无法编译 这些是我使用过的 3 个类的接口 Node h define null Node
  • 调用 McAfee 病毒扫描引擎

    我收到客户的请求 要求使用他们服务器上的 McAfee 病毒扫描将病毒扫描集成到应用程序中 我做了一些调查 发现 McScan32 dll 是主要的扫描引擎 它导出各种看起来有用的函数 我还发现提到了 McAfee Scan Engine
  • 在 xaml 中编写嵌套类型时出现设计时错误

    我创建了一个用户控件 它接受枚举类型并将该枚举的值分配给该用户控件中的 ComboBox 控件 很简单 我在数据模板中使用此用户控件 当出现嵌套类型时 问题就来了 我使用这个符号来指定 EnumType x Type myNamespace
  • 没有特殊字符的密码验证器

    我是 RegEx 的新手 已经进行了大量搜索 但没有找到任何具体内容 我正在编写一个验证密码字符串的正则表达式 可接受的字符串必须至少具有 4 种字符类型中的 3 种 数字 小写字母 大写字母 特殊字符 我对包含有一个想法 也就是说 如果这
  • 如何在 Cassandra 中存储无符号整数?

    我通过 Datastax 驱动程序在 Cassandra 中存储一些数据 并且需要存储无符号 16 位和 32 位整数 对于无符号 16 位整数 我可以轻松地将它们存储为有符号 32 位整数 并根据需要进行转换 然而 对于无符号 64 位整
  • 机器Epsilon精度差异

    我正在尝试计算 C 中双精度数和浮点数的机器 epsilon 值 作为学校作业的一部分 我在 Windows 7 64 位中使用 Cygwin 代码如下 include
  • C++11 删除重写方法

    Preface 这是一个关于最佳实践的问题 涉及 C 11 中引入的删除运算符的新含义 当应用于覆盖继承父类的虚拟方法的子类时 背景 根据标准 引用的第一个用例是明确禁止调用某些类型的函数 否则转换将是隐式的 例如最新版本第 8 4 3 节
  • 如何从本机 C(++) DLL 调用 .NET (C#) 代码?

    我有一个 C app exe 和一个 C my dll my dll NET 项目链接到本机 C DLL mynat dll 外部 C DLL 接口 并且从 C 调用 C DLL 可以正常工作 通过使用 DllImport mynat dl
  • 如何使从 C# 调用的 C(P/invoke)代码“线程安全”

    我有一些简单的 C 代码 它使用单个全局变量 显然这不是线程安全的 所以当我使用 P invoke 从 C 中的多个线程调用它时 事情就搞砸了 如何为每个线程单独导入此函数 或使其线程安全 我尝试声明变量 declspec thread 但
  • 对类 static constexpr 结构的未定义引用,g++ 与 clang

    这是我的代码 a cp p struct int2 int x y struct Foo static constexpr int bar1 1 static constexpr int2 bar2 1 2 int foo1 return
  • C++ 多行字符串原始文字[重复]

    这个问题在这里已经有答案了 我们可以像这样定义一个多行字符串 const char text1 part 1 part 2 part 3 part 4 const char text2 part 1 part 2 part 3 part 4
  • 使用 C# 中的 CsvHelper 将不同文化的 csv 解析为十进制

    C 中 CsvHelper 解析小数的问题 我创建了一个从 byte 而不是文件获取 csv 文件的类 并且它工作正常 public static List
  • x:将 ViewModel 方法绑定到 DataTemplate 内的事件

    我基本上问同样的问题这个人 https stackoverflow com questions 10752448 binding to viewmodels property from a template 但在较新的背景下x Bind V
  • LINQ:使用 INNER JOIN、Group 和 SUM

    我正在尝试使用 LINQ 执行以下 SQL 最接近的是执行交叉联接和总和计算 我知道必须有更好的方法来编写它 所以我向堆栈团队寻求帮助 SELECT T1 Column1 T1 Column2 SUM T3 Column1 AS Amoun
  • 复制目录下所有文件

    如何将一个目录中的所有内容复制到另一个目录而不循环遍历每个文件 你不能 两者都不Directory http msdn microsoft com en us library system io directory aspx nor Dir
  • C 函数 time() 如何处理秒的小数部分?

    The time 函数将返回自 1970 年以来的秒数 我想知道它如何对返回的秒数进行舍入 例如 对于100 4s 它会返回100还是101 有明确的定义吗 ISO C标准没有说太多 它只说time 回报 该实现对当前日历时间的最佳近似 结
  • 在 WPF 中使用 ReactiveUI 提供长时间运行命令反馈的正确方法

    我有一个 C WPF NET 4 5 应用程序 用户将用它来打开某些文件 然后 应用程序将经历很多动作 读取文件 通过许多插件和解析器传递它 这些文件可能相当大 gt 100MB 因此这可能需要一段时间 我想让用户了解 UI 中发生的情况

随机推荐

  • 如何使用应用程序脚本在 Google 电子表格中移动工作表 [重复]

    这个问题在这里已经有答案了 我想使用应用程序脚本在电子表格中移动工作表 怎么做 最好的直播 你看过吗文档 https developers google com apps script reference spreadsheet sprea
  • 使用查询选择器从 VBA 中抓取

    我使用了该网站的代码来提取数据site https bazashifer ru proflist profnastil Option Explicit Public Sub GetInfo Dim sResponse As String i
  • 使用 Mail_Mime 发送附件到 GMail,收到“noname”附件

    我有一个非常简单的网站表单 可以包含附件 它使用 gmail 的 smtp 发送到 gmail 地址 一切工作都很好 除了文件以 noname 形式到达 没有文件名或扩展名 如果您下载附件并使用正确的文件名重命名它 则该文件可以正常打开 我
  • 输入字符串的格式不正确

    下面的代码产生一个错误 指出我的输入字符串的格式不正确 为什么 private void button7 Click object sender EventArgs e string uriAddTagtoGroup string Form
  • 使用 fread 导入数据后所有列均作为字符

    我导入了一个 CSV 文件 包含文本列和数字列 x lt fread myfile csv header TRUE verbose T na strings c null null 但导入后 当我运行summary x 时 所有列都被视为字
  • 如何知道生成的序列最多是一定长度

    我想知道生成的序列是否少于 2 个条目 gt gt gt def sequence for i in xrange secret yield i 我的低效方法是创建一个列表 并测量其长度 gt gt gt secret 5 gt gt gt
  • 使用 PassportJS 和 Connect for NodeJS 对 Facebook 用户进行身份验证

    我正在尝试使用 connect 将 Passport 集成到我的 NodeJS 服务器中 但似乎无法正确执行 所有指南 示例都使用expressJS 因此我尽力重新格式化代码以与我的代码一起使用 但我似乎无法让它工作 相关部分写在下面 有人
  • 如何在chartjs中绘制多个时间序列,其中每个时间序列都有不同的时间

    例如 我有两个时间序列 s1 2017 01 06 18 39 30 100 2017 01 07 18 39 28 101 and s2 2017 01 07 18 00 00 90 2017 01 08 18 00 00 105 我想在
  • 如何从 Java 中的 String 获取类引用?

    如果我需要返回一个基于字符串实例化的类 例如 从 JSON 创建逻辑 应该如何编写 我最初的想法是一个 switch 但在 Android 框架的 Java 版本中 看起来 switch 语句不允许使用字符串 接下来的想法是 HashMap
  • iOS - 检测应用程序是否正在从 Xcode 运行 [重复]

    这个问题在这里已经有答案了 我试图根据代码是否通过 USB Xcode 调试 运行或在从应用程序商店下载的生产模式 发布 运行来启用 禁用部分代码 我知道检查它是否正在运行DEBUG or RELEASE像这样的模式 ifdef DEBUG
  • 内存不一致与线程交错有何不同?

    我正在编写一个多线程程序 正在研究是否应该使用volatile对于我的布尔标志 关于并发性的文档 oracle Trail 没有解释任何关于memory consistency errors以外 当不同的线程有内存一致性错误时 就会发生内存
  • 如何设计具有相互依赖的测试的 Specs2 数据库测试?

    有没有一些首选的方法来设计Specs2 http etorreborre github com specs2 测试 有很多测试取决于之前测试的结果 下面 您将找到我当前的测试套件 我不喜欢var位于测试片段之间 不过 它们是 需要的 因为某
  • Next JS - 源代码中缺少元标签

    我安装了多个元标记 例如标题 描述 关键字等 但是 它没有在查看源代码中显示这些标签 因此 Facebook 共享卡无法正常工作 我已经安装了og标签 但在 Facebook 上似乎找不到它们Scraper或我的查看来源 然而 它填充在客户
  • Scala 中奇怪的类型不匹配

    我希望这个问题还没有在其他地方得到解答 在这里没有找到答案 在我的本地化系统中 我有一个名为 Language 的类 class Language val name String dict HashMap String String def
  • 在 D3 中在外部加载的 svg 图形上绘图

    我已经从 svg 文件加载了外部图形 我想尝试在其上绘图 但不知道如何操作 我的简单 d3 代码在这里
  • 使用 oledb 在同一个 Excel 工作表上写入多个表

    我正在创建 excel 文件XML编写器 https msdn microsoft com en us library system xml xmlwriter v vs 110 aspx由于 xml 属性和文件类型电子表格 它的文件太大
  • 如何正则表达式字符串

    是否可以使用正则表达式检查 完整的字符串是数字AND 第一个字符是 7 或 8 那么字符串的完整长度必须是 11OR 第一个字符是 1 那么字符串的完整长度必须是 10 OR第一个字符是 0 然后是字符串的完整长度 必须是 18 AND 字
  • MongoDB C# 驱动程序“找不到光标”

    我有一个相当密集的操作MongoCursor循环运行几个小时 在通过 c 驱动程序运行的 vb net 应用程序上 我不太确定是什么导致了它 但一段时间后我遇到了异常 Cursor not found 这可能是由于游标超时造成的 有什么办法
  • 选择早于的时间戳

    我如何从数据库中选择超过 12 小时的项目 我使用时间戳列来存储时间 但我认为我不需要年 月 日 只需要小时 我有类似的东西 但它不起作用 没有错误 只是从表中返回所有数据 sql SELECT FROM Y WHERE X and tim
  • 如何在没有清单的情况下启用视觉样式

    根据docs http msdn microsoft com en us library bb773187 aspx 如果您希望应用程序使用 ComCtl32 dll 版本 6 则必须添加应用程序清单或编译器指令指定应使用版本 6 如果可用