我正在创建一个 ToolTip窗口并使用标志向其添加工具 TTF_IDISHWND | TTF_SUBCLASS。 (c++, win32)
我有一个 list 文件,这样我的程序就可以使用新的 WindowsXP 主题 (comctrl32 版本 6)。
当我将鼠标悬停在已注册的工具上时,会出现提示。
很好。
当我点击鼠标时,提示消失了。
好的。
然而,离开工具并返回
again 不会使提示重新出现。我需要将鼠标悬停在另一个工具上
然后回到我的工具,让小费回来。
当我删除我的 list 文件(使用旧的非 XP comctrl32)时, 问题消失了。
经过一些实验,我发现了以下差异 Comctl32 版本 5(旧)和 Comctl32 版本 6(新)中的工具提示之间:
新的 TTF_TRANSPARENT 工具提示(就地使用时)实际返回 如果按下鼠标按钮,则来自 WM_NCITTEST 的 HTCLIENT,从而得到 WM_LBUTTONDOWN 并在消失前暂时窃取焦点。这引起 应用程序的边框闪烁。
旧的 TTF_TRANSPARENT 工具提示总是从 WM_NCHITTEST 返回 HTTRANSPARENT, 因此永远不会自己获得 WM_LBUTTONDOWN,也永远不会窃取焦点。 (这似乎只是审美,但可能会影响下一点……)
新的工具提示似乎不会在单击鼠标后获取 WM_TIMER 事件,并且 仅在停用后恢复获取(一堆)计时器事件,并且 重新激活。因此,他们不会在鼠标点击后重新显示提示窗口 单击并释放。
一旦再次移动鼠标,旧的工具提示就会收到一条 WM_TIMER 消息 点击/释放后,他们准备好重新显示他们的提示。
因此,作为 comctl32 解决方法,我必须:
子类化 TOOLTIPS_CLASS 窗口并始终从中返回 HTTRANSPARENT WM_NCHITTEST 如果该工具要求透明度。
避免使用 TTF_SUBCLASS 而是自己处理鼠标消息 我可以在收到 WM_xBUTTONUP 后停用/重新激活。
我假设内部行为的变化是为了适应超链接等工具提示中新的“可点击”功能,但悬停行为似乎因此被破坏。
有谁知道比我的子类解决方法更好的解决方案吗?我是否遗漏了其他要点?
最佳答案
您不是唯一遇到这些 DLLS 之间工具提示兼容性问题的人。
对于可主题化的公共(public)控件中的新工具提示,我也只有麻烦。在添加 list 和主题化我们的应用程序之前,我们已经在使用鼠标消息和激活/停用提示 - 所以听起来你所做的并不太疯狂。
我们仍然存在随着鼠标移动(不仅仅是悬停时)不断发送 TTN_NEEDTEXT 消息的问题,大提示的定位问题(可能不是新的东西),以及发送奇怪的 unicode 消息而不是 ANSI 版本(我计划在某个时候将其作为问题发布)。
关于windows - Win32 工具提示在 Commctl 6 中消失,永远不会重新出现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51146/
我需要在客户计算机上运行Ruby应用程序。通常需要几天才能完成(复制大备份文件)。问题是如果启用sleep,它会中断应用程序。否则,计算机将持续运行数周,直到我下次访问为止。有什么方法可以防止执行期间休眠并让Windows在执行后休眠吗?欢迎任何疯狂的想法;-) 最佳答案 Here建议使用SetThreadExecutionStateWinAPI函数,使应用程序能够通知系统它正在使用中,从而防止系统在应用程序运行时进入休眠状态或关闭显示。像这样的东西:require'Win32API'ES_AWAYMODE_REQUIRED=0x0
这似乎非常适得其反,因为太多的gem会在window上破裂。我一直在处理很多mysql和ruby-mysqlgem问题(gem本身发生段错误,一个名为UnixSocket的类显然在Windows机器上不能正常工作,等等)。我只是在浪费时间吗?我应该转向不同的脚本语言吗? 最佳答案 我在Windows上使用Ruby的经验很少,但是当我开始使用Ruby时,我是在Windows上,我的总体印象是它不是Windows原生系统。因此,在主要使用Windows多年之后,开始使用Ruby促使我切换回原来的系统Unix,这次是Linux。Rub
无论您是想搭建桌面端、WEB端或者移动端APP应用,HOOPSPlatform组件都可以为您提供弹性的3D集成架构,同时,由工业领域3D技术专家组成的HOOPS技术团队也能为您提供技术支持服务。如果您的客户期望有一种在多个平台(桌面/WEB/APP,而且某些客户端是“瘦”客户端)快速、方便地将数据接入到3D应用系统的解决方案,并且当访问数据时,在各个平台上的性能和用户体验保持一致,HOOPSPlatform将帮助您完成。利用HOOPSPlatform,您可以开发在任何环境下的3D基础应用架构。HOOPSPlatform可以帮您打造3D创新型产品,HOOPSSDK包含的技术有:快速且准确的CAD
之前在培训新生的时候,windows环境下配置opencv环境一直教的都是网上主流的vsstudio配置属性表,但是这个似乎对新生来说难度略高(虽然个人觉得完全是他们自己的问题),加之暑假之后对cmake实在是爱不释手,且这样配置确实十分简单(其实都不需要配置),故斗胆妄言vscode下配置CV之法。其实极为简单,图比较多所以很长。如果你看此文还配不好,你应该思考一下是不是自己的问题。闲话少说,直接开始。0.CMkae简介有的人到大二了都不知道cmake是什么,我不说是谁。CMake是一个开源免费并且跨平台的构建工具,可以用简单的语句来描述所有平台的编译过程。它能够根据当前所在平台输出对应的m
C#实现简易绘图工具一.引言实验目的:通过制作窗体应用程序(C#画图软件),熟悉基本的窗体设计过程以及控件设计,事件处理等,熟悉使用C#的winform窗体进行绘图的基本步骤,对于面向对象编程有更加深刻的体会.Tutorial任务设计一个具有基本功能的画图软件**·包括简单的新建文件,保存,重新绘图等功能**·实现一些基本图形的绘制,包括铅笔和基本形状等,学习橡皮工具的创建**·设计一个合理舒适的UI界面**注明:你可能需要先了解一些关于winform窗体应用程序绘图的基本知识,以及关于GDI+类和结构的知识二.实验环境Windows系统下的visualstudio2017C#窗体应用程序三.
1.postman介绍Postman一款非常流行的API调试工具。其实,开发人员用的更多。因为测试人员做接口测试会有更多选择,例如Jmeter、soapUI等。不过,对于开发过程中去调试接口,Postman确实足够的简单方便,而且功能强大。2.下载安装官网地址:https://www.postman.com/下载完成后双击安装吧,安装过程极其简单,无需任何操作3.使用教程这里以百度为例,工具使用简单,填写URL地址即可发送请求,在下方查看响应结果和响应状态码常用方法都有支持请求方法:getpostputdeleteGet、Post、Put与Delete的作用get:请求方法一般是用于数据查询,
文章目录1.开发板选择*用到的资源2.串口通信(个人理解)3.代码分析(注释比较详细)1.主函数2.串口1配置3.串口2配置以及中断函数4.注意问题5.源码链接1.开发板选择我用的是STM32F103RCT6的板子,不过代码大概在F103系列的板子上都可以运行,我试过在野火103的霸道板上也可以,主要看一下串口对应的引脚一不一样就行了,不一样的就更改一下。*用到的资源keil5软件这里用到了两个串口资源,采集数据一个,串口通信一个,板子对应引脚如下:串口1,TX:PA9,RX:PA10串口2,TX:PA2,RX:PA32.串口通信(个人理解)我就从串口采集传感器数据这个过程说一下我自己的理解,
深度学习部署:Windows安装pycocotools报错解决方法1.pycocotools库的简介2.pycocotools安装的坑3.解决办法更多Ai资讯:公主号AiCharm本系列是作者在跑一些深度学习实例时,遇到的各种各样的问题及解决办法,希望能够帮助到大家。ERROR:Commanderroredoutwithexitstatus1:'D:\Anaconda3\python.exe'-u-c'importsys,setuptools,tokenize;sys.argv[0]='"'"'C:\\Users\\46653\\AppData\\Local\\Temp\\pip-instal
我最喜欢的Google文档功能之一是它会在我工作时不断自动保存我的文档版本。这意味着即使我在进行关键更改之前忘记在某个点进行保存,也很有可能会自动创建一个保存点。至少,我可以将文档恢复到错误更改之前的状态,并从该点继续工作。对于在MacOS(或UNIX)上运行的Ruby编码器,是否有具有等效功能的工具?例如,一个工具会每隔几分钟自动将Gitcheckin我的本地存储库以获取我正在处理的文件。也许我有点偏执,但这点小保险可以让我在日常工作中安心。 最佳答案 虚拟机有些人可能讨厌我对此的回应,但我在编码时经常使用VIM,它具有自动保存功
我在目录“C:\DocumentsandSettings\test.exe”中有一个文件,但是当我用单引号编写命令时`C:\DocumentsandSettings\test.exe(我无法在此框中显示),用于在Ruby中执行命令,我无法这样做,我收到的错误是找不到文件或目录。我尝试用“//”和“\”替换“\”,但似乎没有任何效果。我也使用过系统、IO.popen和exec命令,但所有的努力都是徒劳的。exec命令还使程序退出,这是我不想发生的。提前致谢。 最佳答案 反引号环境就像双引号,所以反斜杠用于转义。此外,Ruby会将空格解