问题标签 [wndproc]

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 投票
2 回答
1675 浏览

c++ - 从 HWND 引用关闭回调或 WM_CLOSE

我正在调用 HtmlHelpA winapi 方法来显示我的应用程序的 .chm。此方法立即返回 HWND,帮助窗口显示为单独的窗口。

除了窗口,我为这个 hwnd 设置了一个计时器。我的问题是我需要知道这个窗口何时关闭以终止计时器。

我的第一种方法是尝试注册 WndProc 回调,但我不能这样做,因为我没有创建窗口,我只有对 hwnd 的引用。

然后我尝试了一个钩子(SetWindowsHookEx),但 HOOKPROC 不会将 HWND 作为回调的参数。此外,我需要知道这个 hwnd 的线程。

当 HWND 关闭或有 WndProc 等待 WM_CLOSE 消息时,有什么方法可以注册回调?

0 投票
0 回答
329 浏览

.net - TextBox 的自动完成功能涉及哪些 WndProc 消息?

这个问题与这个有关。我想知道显示 AutoComplete UI 时 TextBox 控件接收到哪些 Windows 消息:

0 投票
3 回答
1449 浏览

c# - ToolStripDropDownButton - 使用 Esc 键更改下拉行为

我有一个带有 ToolStripDropDownButton 的自定义控件。ToolStripDropDownButton 有许多工具条项目(特别是一个自定义工具条项目,它们是复选框)。用户可以选择他们想要的复选框项目,我处理 DropDownClosed 事件,然后使用这些选中的项目。

目的是让用户通过点击退出键来取消他的选择。问题是按下 Escape 键时也会触发 DropDownClosed 事件。因此,当用户选择选项并想要按 Escape 取消选择时,DropDownClosed 事件会触发,我最终会“应用”这些设置。

我尝试在托管 ToolStripDropDownButton 的控件上使用以下覆盖:

没有太大的成功,因为在处理任何这些事件之前下拉菜单似乎隐藏了。修改此行为的最佳方法是什么?

0 投票
2 回答
171 浏览

windows - 来自 PowerPoint 点击器的 WM 消息

我正在尝试查找在点击器上的 prev/next 按钮(即this)被按下时发送到类似 PowerPoint 的应用程序的 WM 消息。有人知道这些是什么吗?它似乎基本上是4:prev,next,黑屏,开始演示。

谢谢。

0 投票
1 回答
416 浏览

delphi - 如何检查控件何时完全初始化?

如何检查控件是否已完全初始化?
考虑以下代码(我知道这样做是非常糟糕的做法,请以它为例)

PS我知道OutputDebugString :-)
谢谢!

0 投票
1 回答
1953 浏览

delphi - 从 TMessage 获取控制句柄的方式

有没有办法获得控制句柄或其他信息,我可以识别只有 TMessage 变量的控件?问题与德尔福有关。

我正在做的事情是,我将几个控件 wndproc 与一个函数挂钩,我需要找到那是什么控制消息。

代码:

“挂钩”的方式(虚拟树视图需要)

这是钩子函数。

第二个函数也需要 FEdit 索引...

0 投票
1 回答
2257 浏览

c - 如何将 win32 WndProc 包装到 C++ 类中?

这甚至可能吗?例如,假设我有以下内容:

现在,某处将有一个部分(可能在Window类的构造函数中,有必要分配WNDCLASSEXa WndProc,这是在类中注明的Window。唯一的问题是,因为它是类的一部分,所以有一个将引发错误。因此,这是如何实现的?它是静态的吗?即便如此,如果类包装它,它仍然是类的一部分。如果我在类之外创建它,那只会抹杀这一点.

0 投票
1 回答
494 浏览

c - WM_PAINT 的帧率

谁能告诉我,我怎样才能以每秒帧数获得 WM_PAINT 消息的帧率?我正在尝试制作软件渲染器,并且帧率对于调试非常重要。

0 投票
2 回答
1160 浏览

delphi - Delphi 6 TWinControl 后代的 WndProc() 有时如何在主 VCL 线程之外执行?

我有一个多线程的 Delphi 6 应用程序。我创建了一个源自 TWinControl 的组件。当我第一次构建它时,我使用了一个隐藏窗口,它是 WndProc 来处理消息,由 AllocateHwnd() 分配。最近我开始清理代码中的 WndProc,并决定删除辅助的 WndProc()。我更改了组件以覆盖基类 WndProc() 方法,并从那里进行自定义 Windows 消息处理。在那个 WndProc() 中,我首先调用了继承的处理程序,然后处理了我的自定义消息(WM_USER 偏移量),如果找到我的一条自定义消息并处理它,则将消息结果字段设置为 1。

一个重要的注意事项。我在 WndProc() 覆盖的顶部放置了一行代码,如果当前线程 id 不是 VCL 主线程,则会引发异常。我想确保 WndProc() 仅在主 VCL 线程的上下文中执行。

在这样做并运行我的程序之后,我遇到了一些看起来非常奇怪的事情。我正常运行我的程序,并且没有错误地完成了各种任务。然后,当我转到与我的 TWinControl 后代位于同一页面上的 TMemo 控件时。如果我在该 TMemo 控件内单击,则会触发我的 WndProc() 覆盖中的主线程检查。我在上面设置了一个断点,当我进入调用堆栈时,在我的 WndProc() 覆盖之上没有任何内容。

据我所知,并且我已经仔细检查过,我没有对 WndProc() 覆盖进行显式调用。那不是我曾经做过的事情。但是鉴于我的 TWinControl 组件将像所有其他组件一样在主 VCL 线程上创建,我无法理解 WndProc() 覆盖将如何在后台线程的上下文中执行,尤其是只有当 UI 操作像鼠标点击会发生。我了解我的 WndProc() 如何与 TMemo 控件相关联,因为所有子窗口都在顶层窗口 WndProc() 之外,至少这是我的理解。但是由于所有组件窗口都将在主 VCL 线程上创建,因此它们的所有消息队列也应该在该上下文中执行,对吗?

那么我可以创建什么样的情况来使我的 WndProc() 运行,并且仅在某些情况下,在后台线程的上下文中运行?

0 投票
2 回答
990 浏览

vb.net - 什么是 WndProc 消息 24

我目前正在尝试运行现有的 VB.NET 项目。WndProc 消息中引发了一个空指针异常,但堆栈跟踪并没有真正给我任何信息。我可以在启动表单的设计器代码中放置一个断点,但是当我单步执行它时,会通过 WndProc 函数触发 NULL 指针异常。上面的方法似乎是 Windows 方法。我唯一的线索是 Msg = 24 和 WParam = 1 的 Message 参数。我认为 HWnd = 5178884 没有帮助。

我正在粘贴堆栈跟踪,以防有人有任何想法。 注意:我屏蔽了 MyNamespace 和 MyBaseForm 和 MyFormA 因为源代码是专有的。这在 .NET Framework 3.5 上的 Visual Studio 2008 中运行