问题标签 [message-loop]

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 投票
0 回答
22 浏览

windows - 我从 WV_MBUTTONDOWN 得到错误的 wParam

所以我正在尝试构建一个简单的输入处理程序来处理 Windows 消息循环。但是由于某种原因,当我测试 WM_MBUTTONDOWN 的情况时,我得到的 wParam 就像我按下“Shift-key”一样。尝试单击鼠标中键时得到的代码是十进制的 16 或十六进制的 0x10。当我查看它时,我可以看到 MBUTTON 应该是 0x04 但我不明白。

有人遇到过这个吗?

这是我在 Win32 应用程序的 WndProc 函数中使用的代码。(当然还有更多的案例可以检查它们是否启动等等,但觉得这与问题无关)

0 投票
0 回答
374 浏览

c++ - [c++ windows]从不属于我的窗口中捕获鼠标点击事件

我想检测鼠标何时按下我的壁纸。所以我得到了壁纸句柄,现在我正在尝试向它添加一个消息循环,但由于某种原因它无法正常工作。

到目前为止,这是我的代码:

为什么当我在墙纸上触发偶数时它不显示消息框,例如当我单击它甚至只是移动鼠标时?

0 投票
1 回答
40 浏览

mfc - 如何使用消息循环机制统计 mfc 中的每个按钮单击?

我有一个 MFC 应用程序。我想统计每个按钮点击,包括按钮 ID 和时间。我可以在CWinApp::PreTranslateMessage(MSG* pMsg)or 中做CWnd::PreTranslateMessage(MSG* pMsg)吗?如何?

0 投票
1 回答
335 浏览

windows - 立即等待 GUI 事件和 IOCP 通知

我可以同时等待 GUI 事件(即泵送消息循环)和 I/O 完成端口吗?我想将 libuv 与 Windows GUI 集成。

0 投票
1 回答
752 浏览

.net-core - .NET Core 中的窗口消息循环(WndProc | While (GetMEssage))线程

我正在尝试使用 .Net Core 订阅窗口消息

我能够接收初始消息以创建一个窗口(通过 pinvoke)并销毁消息。但在那之后我创建的窗口被阻止并且没有收到任何其他消息。

类创建自定义窗口CustomWndProc 接收消息。我还没有在那里执行任何逻辑,只是想让事情正常进行。

我试图弄清楚如何从一个单独的线程中执行此操作,以便在不阻塞主 api/gui/console 接口的同时继续收听消息

我可以在单独的线程中创建这个类并且仍然使用依赖注入并且可以随心所欲地访问它的数据/消息/事件。我知道在 .net 中有很多方法可以做到这一点,但这是 .net Core。

否决票是怎么回事,实际上没有资源如何在 Net Core 中实现这一点,我无法访问任何简化这一点的 .Net 表单/控件,我还提供了完整的工作类,如果缺乏细节在我的帖子中,发表评论。不要在没有充分理由的情况下随机投票。如果有另一个线程解释了如何做到这一点,链接它,然后投反对票。

实现了 GetMessage 循环,我的窗口现在接收所有消息并且没有被阻塞,但它现在阻塞了主线程。我会看看我是否可以在单独的线程上创建窗口并在该线程上运行消息循环。

0 投票
1 回答
165 浏览

c# - 为什么在 Main() 中直接启动表单时 Task.WaitAll 会挂起?

我在 C# WinForms 应用程序中添加了一个闪屏表单,以便在应用程序初始化/检查更新时显示。我正在使用 Squirrel.Windows 来检查 Program.cs 中的更新。

添加启动画面后,在 Main() 中对 Task.WaitAll 的调用永远不会返回。在添加启动画面之前,此调用按我预期的方式工作。

我可以做些什么来确保在 Main() 中完成任务,同时在前台显示初始屏幕?

工作示例:

非工作示例:


我已经阅读了一堆描述 Task.WaitAll 锁定的 SO 帖子,但我找不到对我在这里看到的现象的直接解释,即
同步等待异步操作,以及为什么 Wait() 冻结这里的程序

我将如何同步运行异步 Task<T> 方法?

我确实尝试了调用 task.RunSynchronously() 的建议,但似乎没有什么区别。

0 投票
0 回答
69 浏览

windows - 为什么需要 PostQuitMessage

很简单的问题。我只是好奇为什么我会使用 PostQuitMessage(0) 来打破我的消息循环,而不是仅仅执行以下操作:

老实说,我真的不认为这样做有什么害处,但也许有一些我不太清楚的细节。

0 投票
2 回答
2864 浏览

c++ - 是否可以在不使用 C++ 创建窗口的情况下创建消息循环

我正在使用一些蓝牙库和一些蓝牙回调,有必要使用 Windows 消息循环。但根据我的要求,我需要创建一个没有任何 GUI 的普通 C++ 程序。是否可以在没有窗口的情况下创建消息循环?

在此示例代码中,我应该在调用 apiObject.discoverBluetoothDevices() 后收到回调为 OnDiscoveryStarted 和 OnDiscoveryComplete。

由于他们使用消息循环进行回调,所以我只在 GUI 应用程序上得到了回调。如何使用消息循环接收回调,因为库文档说需要消息循环。

0 投票
0 回答
197 浏览

vb.net - CefSharp.WinForms 拖放消息循环覆盖

我需要实现提供给以下 StackOverflow 线程的答案: How to receive drag move and drag drop events using CefSharp winforms

我已经尝试实现代码,但我觉得提供的答案没有给我提供有关所提供代码的足够详细信息。

例如,为什么存在IOleDropTargetIOleDropTargetHelper存在?

为什么在OleDragEnter程序的示例用法中,它 RaiseEvent 到 Browsers DragEnter -- RaiseEvent DBDragEnter(eff, New Point(winPT.x, winPT.y)),当我们在EnumChildProc_Browser--Dim ret = NativeMethodsEx.RevokeDragDrop(hwndChild)

我的实现不起作用,因为我在尝试删除拖放时收到错误

您可以在我的 github 存储库中找到我的代码:https ://github.com/krptodr/StackOverflow.git

我希望能够看到如何使用上面引用的解决方案提供的代码覆盖 cefSharp winForms 的默认 DragHandler。

0 投票
1 回答
27 浏览

c# - 难以正确显示“登录”和“主”表单

我有一个 WinForms 应用程序,带有登录表单和主表单。登录表单包含两个供用户输入凭据的文本框、一个确定按钮和一个取消按钮。以下代码是 OK 按钮的事件处理程序:

这样做的问题是,当主窗体打开时,它会保留登录对话框。我试图通过调用ShowDialog()from将登录表单显示为模式对话框来完成所需的行为Program.cs,但这并没有实现所需的行为。

请注意,主窗体有一个注销选项。也就是说,它应该删除主表单并再次显示登录表单。

Program.cs 代码:

这会产生一个错误,表示无法启动第二个消息循环。