问题标签 [window-messages]
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.
c++ - WinAPI 的 ::WaitMessage 阻止 WM_TIMER 到来
在我看来,我遇到了 WinAPI 的奇怪行为。在我的程序中,我正在为窗口设置一个计时器
并在我的窗口过程中处理 WM_TIMER 消息。为了减少所需的 cpu 时间,我还在::WaitMessage
消息泵中使用了该功能。现在事实证明,只要我在::WaitMessage
那里有这个功能,WM_TIMER 消息就会在一段时间后停止出现。如果我从我的消息泵中删除它,一切都会按预期工作。
现在我想知道我是否设置了错误的计时器,或者这是否是::WaitMessage
. 搜索 MSDN 和网络并没有让我知道为什么会这样。
这是我使用的消息泵:
希望有人可以为我解决这个问题。
c++ - 如何处理父 CDialog 上的控制消息?
我有一些控制,比如CtrlTree
on CMyDialog
。我想处理ON_WM_LBUTTONDOWN()
来自课堂CTreeCtrl
的消息。CMyDialog
MFC 中有没有办法将消息流重定向到父级?
winapi - WM_REFLECT_NOTIFY 与 WM_NOTIFY
WM_NOTIFY的文档很容易找到,但是我找到了大量引用的示例代码和文章,WM_REFLECT_NOTIFY
但我找不到任何文档。
什么是WM_REFLECT_NOTIFY
,我在哪里可以找到它的文档以及此消息与此有何不同WM_NOTIFY
?
示例参考:
c++ - C++ Builder XE,传递和处理用户定义的消息
我正在尝试学习如何在 VCL 表单应用程序中传递和处理消息。我已经在互联网上挖掘了一段时间,发现了这个
假设我有一个进度条,我想使用消息更新(顺便说一句,如果有任何其他更好的方法,我很想听到它)所以我做了一个简单的项目来测试这些东西,这就是我所拥有的(RECEIVER 是一个带进度条的表单,SENDER是用于发送消息的按钮,updBar是更新进度条的功能,123456是我要使用的消息ID): Unit1.cpp:
单元1.h:
如您所见,我已经为我的消息定义了处理函数和适当的消息处理程序。但是当我通过调试器查看它时(在使用按钮发送消息之后),执行点似乎既不去我的函数也不去处理程序行。提前致谢
c++ - 如何拦截 Sendmessage API
我需要拦截 SendMessage API 以防止有人通过发送 WM_GETTEXT 从特定窗口获取文本。所以请建议我如何做到这一点
c++ - Windows 多显示器位置
如果监视器位置发生变化,Windows 会发送任何消息吗?
例如,如果从 WM_DEVICECHANGE 将新显示器插入 PC,我会感到困惑。
当我改变显示器的位置时,我需要这样的消息。
(关于poisiton我的意思是:左边的第一个监视器,右边的第二个监视器。之后我改变了poisiton,第一个监视器右边,第二个监视器左边。)
.net - 用于模态对话框的 WPF 表单和 Windows 消息传递
我有一个带有文本框和按钮的简单 WPF 表单,在失去焦点时它只是简单地显示一个消息框。我的代码看起来像这样
如果我的文本框有焦点并且当我单击按钮时,如果显示消息框,则不会触发按钮单击,但是如果我在显示消息框之前调用 Application.DoEvents(),则我的按钮单击会被触发。
我的实际应用程序要复杂一些,但我试图用一个简单的文本框和一个按钮来模拟这种行为。在实际应用程序中,我的后台工作线程之一在调度程序上发布以显示模式消息框(甚至 WPF 表单),并且队列中的任何 UI 挂起消息似乎都由消息框(我怀疑)处理,例如,如果我单击画布控件理想情况下,我会得到“ Mouse Down ”和“ Mouse Up ”,但是如果在这 2 条消息之间出现模态消息框,那么我只会得到“ Mouse Down ”和“ Mouse Up ”消息丢失。
注意:在非模态对话框的情况下,我看不到这种行为。
另外,如果有人可以指出我的知识,关于 Windows 窗体如何在模态对话框和非模态对话框的情况下处理 Windows 消息泵的好文章会很有帮助。
c# - 在控件之间同步鼠标点击
我有一个 TableLayoutPanel 和一个 Treeview,我想彼此同步鼠标点击。这样做的原因是我希望能够在我的 TableLayoutPanel 中选择一些东西,然后它也应该在 Treeview 中选择一些东西。
这是它的外观:
我的第一次尝试有效,但有一些延迟。我将 Treeview 连接到 NodeMouseClick 事件,当该事件触发时,我Refresh() TableLayoutPanel 以便调用 CellPaint 事件并绘制整行。使用这种方法,我看到一些延迟,因为先绘制 Treeview,然后绘制 TableLayoutPanel。
当我使用相同的方法但反过来(单击 TableLayoutPanel 并在 Treeview 中选择相应的节点)时,我没有得到尽可能多的延迟。我猜这是因为绘制行所需的时间比选择节点所需的时间长。
我尝试了不同的解决方案:
在我的 Treeview 类中,我添加了这个:
我想到了一个如何同步 Treeview 滚动条的例子
问题在于 TableLayoutPanel 中的 CellPaint 事件不再被触发,即使使用Update() ......它确实在 Treeview 中选择了正确的节点:
如果我尝试在 Treeview 中实现相同的东西(覆盖 WndProc),我也预见到会出现一些问题,这会导致复制消息的疯狂循环吗?
那么有没有(n)(简单)方法可以做到这一点?
谢谢</p>
c# - c# 中的 TVN_SELCHANGING 消息
我正在尝试从 TreeView 中捕获 TVN_SELCHANGING 消息。我知道还有 BeforeSelect 事件,但我想了解为什么我无法捕捉到消息……</p>
我在 msdn 上读过 TVN_SELCHANG(ED)(ING) LParam 是一个指向NMTREEVIEW结构的指针。此外,代码以 WM_NOTIFY 消息的形式发送。
所以我试图实现它:( 这对我有帮助)
我已经尝试了所有操作,但它们似乎都不起作用。我究竟做错了什么?
windows - 检测全屏模式切换,无需每秒手动检查
我有一个最上面的窗口。我需要它位于任何其他最顶层窗口的最顶层,但不覆盖任何全屏窗口:特别是:{Windows Media Player, Youtube flash player, RDP}
有一个持续检查的解决方案:
- 我检查的每 YYY 毫秒(在同一显示器上)是否存在另一个尺寸等于屏幕尺寸的最顶层窗口。
- 如果是这样:使我的窗口非最顶层,否则使其成为最顶层。
但我正在寻找另一种资源消耗较少的解决方案,它不会执行数十次系统调用并每秒遍历整个最顶层窗口树。
我可以处理任何 WM_
我可以将钩子注入一个进程。
问题:
如何检测同一桌面上的全屏窗口?
如何使用传入的 WM_(s) 或除连续检查以外的任何技术检测全屏模式?