在 Windows 上绘制主题组合框

2024-04-20

我尝试模仿主题不可编辑组合框的外观(CBS_DROPDOWNLIST) using DrawThemeBackground https://msdn.microsoft.com/library/windows/desktop/bb773306(v=vs.85).aspx。我供应零件CP_READONLY https://msdn.microsoft.com/library/windows/desktop/bb773210(v=vs.85).aspx,它显然绘制了主题组合框的背景:

DrawThemeBackground(theme, dc, CP_READONLY, CBRO_NORMAL, &rectangle, nullptr);

但是,它不包含下拉箭头。因此,我尝试按照以下方式自己绘制箭头:

rectangle.left = rectangle.right - 20;
DrawThemeBackground(theme, dc, CP_DROPDOWNBUTTONRIGHT, CBXSR_NORMAL, &rectangle, nullptr);

但上面画的是箭头centered在组合框背景上的矩形内包括边界,所以如果组合框内没有边框(它本身已经有边框),我就无法使用它。我用了主题浏览器 https://github.com/mity/theme-explorer验证箭头始终位于带边框的背景上。

本质上,我的问题是:我怎样才能画背景and适当位置的箭头可以模拟普通 Windows 组合框的外观?

到目前为止我发现了什么:

  • 我可以指定一个剪切矩形来剪掉上述边框。但这提出了确定确切位置矩形和剪切矩形的问题:看来我可以使用GetThemeMargins https://msdn.microsoft.com/library/windows/desktop/bb759755(v=vs.85).aspx确定边距,但这并不能告诉我整个箭头有多大。

  • GetThemeBitmap https://msdn.microsoft.com/library/windows/desktop/bb773388(v=vs.85).aspx可能对确定箭头的确切大小有用,但正如我读到的here https://www.codeproject.com/Articles/620045/Custom-Controls-in-Win-API-Visual-Styles并在我的机器上确认,使用它TMT_GLYPHDIBDATA并不像宣传的那样工作,如果可能的话,我希望不使用任何解决方法。


None

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 Windows 上绘制主题组合框 的相关文章

  • 适用于 Windows 的免费内存调试器? [复制]

    这个问题在这里已经有答案了 可能的重复 有 Windows 的良好 Valgrind 替代品吗 https stackoverflow com questions 413477 is there a good valgrind substi
  • XP 和 Vista 之间使用 Winsock API 的 UDP 多播差异

    Windows XP 和 Windows Vista 之间设置 UDP 多播套接字所需的实现似乎有所不同 具体来说 在 Windows XP 下 您must call bind 在您可以引用任何特定于多播的套接字选项之前 然而 在windo
  • Windows 服务和 Windows 进程有什么区别?

    是什么不同之处窗户之间service和一个窗户process 服务是真正的 Windows 进程 没有区别 服务的唯一特殊之处在于它由操作系统启动并在单独的会话中运行 一种独立的方式 可防止其干扰桌面会话 传统上命名为daemon http
  • Emacs 23.1.50.1 在 Windows XP 上随机挂起 6-8 秒

    我的 Windows XP 机器上有 EmacsW32 23 1 50 1 emacs 运行 它随机挂起 5 到 8 秒 非常令人沮丧 有人有解决办法吗 我什至尝试使用来自 gnu ftp 站点的 emacs win32 二进制文件 23
  • 如何从 Emacs 中运行 Cygwin Bash Shell?

    我在 Windows 上运行 GNU Emacs 因此输入 M x shell 启动 Windows 命令行 DOS shell 但是 我希望能够从 Emacs 中运行 Cygwin Bash Shell 或任何其他非 Windows sh
  • Cygwin setup.exe 在安装 Windows 8 期间挂起?我该怎么继续?

    因此 过去几年我断断续续地使用过 Cygwin 并且安装过几次 但是 我从未在安装过程中经历过安装挂起的情况 发生这种情况时 安装实际上会冻结并且不会 一点 移动 我读到这是一个有点常见问题 http cygwin com ml cygwi
  • Windows XP 风格:为什么我们在静态文本小部件上得到深灰色背景?

    我们正在使用 C 和 Win32 编写 Windows 桌面应用程序 我们的对话框具有 Windows XP 风格 的丑陋外观 静态文本的背景是灰色的 如果对话框背景也是灰色 这不是问题 但在背景为白色的选项卡控件内 文本的灰色背景非常明显
  • 如何设置按钮的大小?

    我将按钮放在带有 GridLayout 的 JPane 中 然后我用 BoxLayout Y AXIS 将 JPanel 放入另一个 JPanel 中 我希望 GridLayout 中的按钮是方形的 我使用 tmp setSize 30 3
  • 为什么要输入两次密码?

    在大多数网站的注册用户部分 他们要求您输入密码两次 这是为什么 为什么不只输入一次密码 为什么一定要 确认 呢 You know Username Password Confirm password Submit 这件事在我心里已经有一段时
  • Extjs - 如何在网格列中显示组合框

    我有一个网格面板 包括日期和组合列jsfiddle http jsfiddle net YjYqX 但我不想点击显示我的组合 我想在不点击的情况下显示我的组合 而不是像隐藏在单元格内一样 日期列也一样 我认为改变clicksToEdit 0
  • wpf 调试错误输出 System.WIndows.Data 错误 25

    我有一个自定义样式的组合框 效果很好 它被放置在用户控件内并绑定到数据结构 我使用 DisplayMemberPath 仅显示组合框文本框中的一个元素 ComboBox 样式取自 MSDN 并被多次使用 所以这里就不显示了
  • 按钮和窗口之间的空间

    我这里有这段代码 其想法是在主窗口中在文本区域旁边有两个按钮 但我尚未添加 在尝试使用 GridBagLayout 并在此过程中扯掉我的头发后 我决定不使用布局并在不可调整大小的窗口内手动放置按钮 import java awt impor
  • Windows Server / Datacenter:设置 CPU 关联性 > 64 个核心

    SetThreadAffinityMask 允许为 64 个逻辑核心 处理器 设置关联掩码 但是 Windows Datacenter 最多可以有 64 个 CPU 每个 CPU 都有多个内核 请参阅here http social tec
  • 根据条件更改 JSlider 的最小值和最大值

    我正在 Netbeans 中创建 Swing GUI 此 GUI 的目的是打开一个 缓冲 图像 在 JLabel 中作为图标 并对其应用仿射变换 现在我正在做 4 个转换 如下所示 现在 每个变换都需要两个滑块来更改 X 和 Y 值 但旋转
  • 无法以管理员身份更改 Windows 10 中的系统变量路径

    我正在 Windows 10 计算机中安装 Java JDK 需要通过在 Windows 设置中编辑系统变量来注册其路径 但我以管理员和普通用户身份尝试过 但它不允许我添加路径 甚至复制粘贴或仅添加任何角色 在 Win 8 中执行此操作没有
  • 如何从我自己的线程安全地修改 JavaFX GUI 节点?

    我尝试更改线程中的 JavaFX GUI 节点 但看到以下错误 线程 Thread 8 中的异常 java lang IllegalStateException 不存在 FX应用线程 当前线程 线程 8 生成错误的示例代码 public c
  • Qt Designer 与手动编码

    每次我使用图形工具包开始一个项目时 第一个冲突就会发生在如何处理视觉设计和小部件布局的决定上 图形工具还是手动编码 这是一个非常棘手 主观的问题 因为大多数人会根据个人喜好来决定 它还很大程度上取决于图形工具的质量 在这种情况下 我想只关注
  • 如何在 Windows 上的 PostgreSQL 中创建具有 UTF-8 排序规则的数据库?

    我正在为 Windows 上的 Bitbucket 服务器配置 PostgreSQL 数据库 在官方guide https confluence atlassian com bitbucketserver connecting bitbuc
  • IIS 或任何文件夹服务器 2012 R2 中不存在 adfs 目录的虚拟或物理位置

    我有一个完全可操作的联合身份验证服务器 Azure 同步 Office 365 同步和本地 配置的每个部分都完美运行 我遇到的问题是 没有任何 Web 目录文件的痕迹 我查看了每个位置 并且我的联合代理或联合服务器上不存在虚拟目录 我正在尝
  • python:Windows终端中的unicode,使用的编码?

    我在 Windows 7 终端中使用 Python 解释器 我正在尝试了解 unicode 和编码 I type gt gt gt s gt gt gt s x89 gt gt gt u u gt gt gt u u xeb 问题1 字符串

随机推荐

  • 使用 VS2019 和 TFS2018 vnext 构建系统

    有谁知道是否可以将 VS2019 与 TFS2018 vnext 构建系统一起使用 您无法在生成定义中选择 VS2019 但可以选择 最新 作为 Visual Studio 的版本 不幸的是 这里没有选择VS2019 我已经在安装了VS20
  • 如何构建在 Android 上运行的本机(命令行)可执行文件?

    我已经成功构建了一个使用本机 JNI 库的 Android 应用程序 GUI 但是 现在我想创建一个从命令行 root 权限 运行并且根本不使用 GUI 的可执行文件 我如何构建这样的东西 从 NDK r8d 开始 这个问题可以通过更简单的
  • 在 sqlalchemy 中,有没有一种方法可以进行排序,使空单元格位于末尾,无论排序顺序如何?

    我有一个非常标准的设置 想按列排序 someselect order by asc table1 mycol 但是 我想要行 or NULL for mycol显示在结果的末尾 有没有办法做到这一点 SQLAlchemy 有一个NULLS
  • 无法将 UIViewController 类型的值转换为 PatternDetailViewController

    我试图将视图控制器向下转换为详细视图控制器 但不能 我正在使用 Core Data 第一次 错误出现在prepareForSegue方法中 内容如下 无法将 UIViewController 类型的值 0x1b81cdc 转换为 Patte
  • 定义用于执行程序的工作目录 (C#)

    我目前正在尝试从特定文件夹启动可执行文件 我下面的代码使应用程序崩溃得很奇怪 Process p new Process p StartInfo WorkingDirectory dump p StartInfo FileName s p
  • 如何使用Python检查url是否重定向到另一个url

    我想检查目标url访问后是否会重定向 我想我可以做这样的事情 req urllib2 Request url url headers headers resp urllib2 urlopen req timeout 3 code resp
  • 具有特定长度的字符串的哈希值

    有没有一种方法可以生成字符串的哈希值 以便哈希值本身具有特定的长度 我有一个生成 41 字节哈希值 SHA 1 的函数 但我需要它最大为 33 字节 由于某些硬件限制 如果我将 41 字节哈希截断为 33 我可能 当然 失去了唯一性 或者实
  • Google Webmasters API for Java 返回空网站列表

    我编写了一个简单的站点列表查询代码 它使用 Oauth 与服务帐户基于谷歌的文档 https developers google com identity protocols OAuth2ServiceAccount 所使用的身份验证密钥文
  • AJAX 中的 GET 与 POST?

    为什么 AJAX 中有 GET 和 POST 请求 因为它无论如何都不影响页面 URL 由于数据未反映到页面 URL 因此通过 AJAX 中的 GET 传递敏感数据有何区别 您应该根据您的 Web 服务要求使用正确的 HTTP 动词 当处理
  • $(this) 在函数中不起作用

    以下代码从文件加载 html 内容 我使用这个线程 https stackoverflow com questions 168963 stop jquery load response from being cached
  • 删除所有 kubernetes 命名空间中所有 pod 的命令

    查看文档后 有一个 API 调用可以删除单个 pod 但是有没有办法删除all所有命名空间中的 Pod 没有命令可以完全按照您的要求进行操作 以下是一些势均力敌的比赛 运行任何这些命令之前请务必小心 如果您使用多个集群 请确保您连接到正确的
  • 如何使用 C# 在 Selenium WebDriver 中等待警报?

    我如何将 Selenium WebDriver 设置为在接受警报而不是 Thread Sleep 之前等待警报 作为网站 有时加载速度非常慢 有时加载速度很快 Thanks 您应该应用 webdriver 等待警报正确出现 var wait
  • azure 以编程方式设置环境变量以禁用 azure 功能

    我有一个 Azure API 和一个 Azure 函数 当某些逻辑传递到 API 时 我希望它禁用 Azure 功能 这个帖子 https stackoverflow com questions 36368786 programmatica
  • 如何检查 IP 是否位于这些子网之一

    我有大约 12600 个子网 例如 123 123 208 0 20 和一个IP 我可以使用 SQLite 数据库或数组或其他任何东西 大约一个月前有人问过一个类似的问题 但是我不是在寻找针对一个子网检查一个IP 而是针对一堆子网 显然是最
  • 我无法理解“找不到模块:错误:无法解析'fs''”

    有一点空闲时间 我尝试用我喜欢的新网络技术 Typescript Pug 和 React 重新设计我的一个旧项目 一切工作正常 直到我尝试将 pug js 添加到混合中babel plugin transform react pug 无论我
  • 在 xml 中存储 url 的正确方法?

    我将数据存储在 xml 文件中 在其中一个节点中 我必须存储一个由特殊字符 如 组成的 url 我使用 amp 而不是 并且 xml 显示没有错误 但是当我进行 SAX 解析时 节点内返回的字符串值是 之后的字符串 我猜我存储网址的方式不正
  • 在本地主机上的 laravel 中将 slack 连接到 botman

    这是我在 laravel 中的路线文件 我将任何 url 与调用闭包的 botman 相匹配 该闭包为 botman 注册一个 slack 驱动程序并监听消息 hello 在闲暇时我试图设置Request URL在使用此事件订阅下http
  • 查找或创建竞争条件

    我正在尝试使用 ActiveRecordfind or create by column 但我从 Postgres 收到错误 让我知道它有时无法找到模型 并尝试插入一个模型 保持这张表的独特性非常重要 所以我添加了一个 unique gt
  • LuaJIT FFI 回调性能

    The LuaJIT FFI 文档 http luajit org ext ffi semantics html提到从 C 调用回 Lua 代码相对较慢 建议尽可能避免使用 不要将回调用于性能敏感的工作 例如考虑一个数值积分例程 它需要用户
  • 在 Windows 上绘制主题组合框

    我尝试模仿主题不可编辑组合框的外观 CBS DROPDOWNLIST using DrawThemeBackground https msdn microsoft com library windows desktop bb773306 v