问题标签 [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.

0 投票
3 回答
9504 浏览

java - Android:响应式用户界面的最佳实践

我对 Android 和 Java 很陌生。在我使用 C++ 之前,事件与消息一起发送。现在,我想为 Android 平台创建相同的用户体验,如果您对将事件绑定到用户控件的最佳方式提出任何建议或意见,我将不胜感激。

下面是一个来自 C++ 的示例:

...

...

在上述情况下,该方法RecordStart()绑定到 a (按下Buttona 时执行)并发布消息。当接收到消息时,执行该方法。ButtonWM_RECORD_STARTWM_RECORD_STARTOnRecordStart()

如前所述,我想创建一个响应式用户界面,但不确定如果OnRecordStart()直接从以下位置调用该方法是否足够好RecordStart()

我真的很感激你的任何建议。

0 投票
5 回答
5971 浏览

c# - C# 冒泡/传递事件

如何在课程之间传递事件?

我知道这听起来很荒谬(而且确实如此),但在过去的一段时间里我一直被这件事难住了。搜索没有出现类似的问题,所以我想我会提出它。

以下是涉及的对象:

[Speaker, Tweeter, Woofer] 都声明了一个发送简单字符串消息的“SpeakToMe”事件。事件使用标准模式声明:

SpeakToMeEventArgs 是一个简单的类,继承自 EventArgs 并包含一个字符串属性(消息)。

就其本身而言,这些事件中的每一个都可以正常工作。例如,我在表单中设置了一个按钮来创建、订阅和触发 [Speaker, Tweeter, Woofer] 的事件。每个报告都正确返回。

问题是当 Speaker 创建一个 [Tweeter, Woofer] 并订阅他们的事件时。

我想要的是 [Tweeter, Woofer] 触发他们的事件,扬声器消耗它并触发它自己的事件。我认为这应该非常简单:

单步执行此功能(在扬声器中),Console.Out.WriteLine 工作。继续单步执行 OnSpeakToMe,显示委托为空。

发言人的 SpeakToMe 事件由表单订阅。我知道这应该防止事件的委托为空。

我确定这很容易,我错过了什么?

顺便说一句,如果你好奇我为什么要找这个。[Speaker, Tweeter, Woofer] 是我的演示替身,用于非常长的数据处理操作。该表单同时运行其中的几个,并且需要每个班级的进度更新。

一如既往,非常感谢任何和所有帮助!

更新:感谢大家的所有反馈。我真的很感激帮助!我收集了一些很好的技巧(@David Basarab 和@Brian)以及一些关于如何构建事物的不同想法。再次,非常感谢!

0 投票
3 回答
40430 浏览

objective-c - 如何编写具有多个参数的方法/消息?

您如何编写具有多个参数的方法/消息?

编辑:就像单个方法/消息的多个参数一样,我的意思是。

0 投票
1 回答
2338 浏览

windows - PostThreadMessage 返回 ERROR_INVALID_THREAD_ID

我有一个在 Windows Vista 上运行的多线程模拟。当我使用 PostThreadMessage 在线程之间发送消息时,我得到 ERROR_INVALID_THREAD_ID,即使我非常确定(通过调试器)线程 ID 是有效的,并且线程有一个消息队列,因为我从每个线程调用 PeekMessage在我创建它们之后,如 MSDN 中所述。目标线程很可能已挂起,但据我所知,这应该不是问题。

关于尝试什么的任何线索?我正在模拟基于 RTOS 的应用程序,所以我希望不必放入太多 Windows 特定代码。

编辑 -

另一个线索 - 如果我删除所有信号量阻塞,消息工作正常(尽管有一些已知的竞争条件)。但是消息队列不应该受到线程阻塞的影响,对吧?

编辑 2 如 MSDN 所建议的,该代码还具有以下重试机制。但它仍然不起作用 - 重试总是失败。嗯……

0 投票
1 回答
1819 浏览

c# - 有人知道 ShellHook 消息 HSHELL_RUDEAPPACTIVATED 是什么意思吗?

我正在编写建立 shell 钩子以获取 shell 事件的应用程序(如果重要,我正在使用 C#)。我正在使用这个例子: http://msbob.spaces.live.com/blog/cns!DAFD19BC5D669D8F! 132.entry

Hook 工作正常,但我没有收到我感兴趣的消息:HSHELL_WINDOWACTIVATED(所有其他与窗口相关的事件都运行良好)。相反,我收到了代码为 32772 的消息,它应该是 HSHELL_RUDEAPPACTIVATED (一些谷歌搜索有帮助)。

但我不明白为什么我根本没有收到 HSHELL_WINDOWACTIVATED 以及这个 HSHELL_RUDEAPPACTIVATED 消息的含义。MSDN 没有提及它。谁能给我解释一下?

0 投票
3 回答
294 浏览

binary - .mid 文件中的额外字节

我正在尝试从 .mid 文件中读取信息,但我不断看到似乎不属于任何 midi 消息的额外字节。我不确定如何预测/处理这些,它把我项目中的其他所有东西都扔掉了。有什么建议么?这里有几个例子:

我怀疑我什至在这里有故障,因为其中一些似乎毫无理由地具有非零增量时间。

0 投票
2 回答
272 浏览

c++ - 存储用户、错误、异常消息 (c++)

比较简单的问题。我应该在哪里存储错误、异常、用户消息?到目前为止,我总是在将要调用它的函数中声明本地字符串并且没有打扰。例如

突然我意识到,由于每次都调用构造和初始化,它可能非常昂贵。将它们作为静态字符串存储在类中甚至在单独的模块中会更好吗?本地化不是这里的情况。

提前致谢。

0 投票
4 回答
4764 浏览

delphi - 如何在 Delphi 中防止 ProcessMessages

Application.ProcessMessages 命令是众所周知的,我在长进程中使用它以确保我的程序不会占用计算机。

但是我有一组相当快的处理,我将视图缓冲到文件中。在缓冲过程中,可能会发送一些系统消息(例如重绘或滚动条移动或其他事件)。我想防止这些被 ProcessMessages 处理,直到我的缓冲完成。

有没有办法:

  1. 在我的程序完成之前阻止 Application.ProcessMessages,或者

  2. 捕获在我的过程中生成的所有消息,直到过程结束才释放它们。

0 投票
6 回答
5215 浏览

java - 检查消息类型时避免使用 instanceof

我有以下情况,其中客户端类根据它接收到的消息类型执行不同的行为。我想知道是否有更好的方法来做到这一点,因为我不喜欢 instanceof 和 if 语句。

我想做的一件事是将方法从客户端类中提取出来并将它们放入消息中。我会在 IMessage 接口中放置一个类似 process() 的方法,然后将特定于消息的行为放在每个具体的消息类型中。这将使客户端变得简单,因为它只会调用 message.process() 而不是检查类型。但是,唯一的问题是条件中包含的行为与对 Client 类中包含的数据的操作有关。因此,如果我确实在具体的消息类中实现了一个流程方法,我将不得不将它传递给客户端,我也不知道这是否真的有意义。

0 投票
2 回答
3031 浏览

c++ - 从自定义 ListCtrl 捕获 WM_NOTIFY 消息

我的应用程序是 c++,是 MFC 和 ATL 的组合。我在这里使用的部分是 MFC。

我的一个对话框中有一个自定义列表控件类,它继承自 CListCtrl。

我正在尝试为 LVN_ITEMCHANGED 消息添加一个处理程序,以便我可以更新对话框表单的其余部分,这取决于列表的内容。更具体地说,每个列表项都有一个复选框字段,我需要检测它何时更改。

问题是,我的列表没有发送消息。

这是我的消息映射,它工作得很好,我通过简单地更改消息检测到其他消息,如 LVN_ITEMCHANGING、NM_CLICK 和 NM_RELEASEDCAPTURE。

因此,我的猜测是 listctrl 自定义类以某种方式无法正确发布消息。

这个问题可以通过多种方式回答:
1.如何将 LVN_ITEMCHANGED 消息从子列表发布到其父列表(对话框)?
2.我是否捕捉到了正确的信息?我尝试过的大多数都过早地触发了更新(即在更新列表中的数据之前)当我这样做时,对话框会根据列表的先前状态刷新。
3.还有什么我不应该做的事情吗?我问这个只是为了让它开放。