在Windows上的C++中,我们使用用户定义的消息以表单UI的形式通过PostMessage API更新数据。我们可以在C#中使用PostMessage,但不知道如何在Forms中处理用户定义的消息! 有些人会告诉我使用委托和调用,但当线程调用委托时表单已关闭或尚未创建时,我们遇到问题。我们仍然喜欢PostMessage来通知UI更新数据。 请帮助。,如何将用户消息发布到Windows并进行处理?
-1
A
回答
1
Form
有一个方法可以覆盖,WndProc,它将接收您的自定义消息。它以Message
结构为参数,封装消息的hwnd,msg,wParam和lParam参数,并包含消息结果的字段。所以假设你有一条注册信息:
class MyForm : Form
{
const int MyMessage = WM_USER + 0x05; // for example
protected override void WndProc(ref Message m)
{
if (m.Msg == MyMessage)
{
// do whatever with your message
}
}
}
相关问题
- 1. 如何处理Windows消息
- 2. 处理Windows消息
- 3. Win32:如何将消息发布到由Windows中的其他用户运行的进程?
- 4. 发布消息无法到达用户
- 5. 发送或发布消息到Windows窗体消息循环
- 6. 如何处理消息之前将其发送到DLQ
- 7. 序列或并发hl7消息处理
- 8. 如何在处理入站消息后异步发布新的JMS消息?
- 9. 与ActiveMQ并行处理多条消息
- 10. Facebook C#SDK - 将消息发布到用户墙
- 11. 如何通过ConsumerGroup控制处理消息的并发性
- 12. 发布消息引用用户
- 13. 如何处理EXCEPT消息?
- 14. 如何使用curl将消息发布到Facebook商业页面?
- 15. 替代JMS消息传递以在Torquebox中进行并发处理
- 16. Windows:将消息发送到父窗口?
- 17. 如何判断是否正在进行骡流消息处理
- 18. 如何在Perl中设置消息进行处理?
- 19. 如何自动分配工作人员进行消息处理?
- 20. SQS队列并行处理消息使用sqs消费者nodejs
- 21. 消息处理器如何将答复发送出序列?
- 22. 使用Java线程池,如何根据消息特性并行处理一些消息和其他消息?
- 23. 如何使用SignalR将消息发送到特定客户端
- 24. 如何从stdin中将node.js逐行进行流式处理并发送到客户端?
- 25. 如何使用JNA处理WM_QUERYENDSESSION消息
- 26. 处理消息
- 27. 在Windows服务中处理MSMQ消息
- 28. irp处理和windows消息生成
- 29. Android的消息应用程序如何处理重发失败的消息
- 30. 如何将Windows消息发送到非主窗体
我不明白这是什么意思。什么是“用户定义的消息在表单”?如果PostMessage适合你,为什么不简单使用它?为什么你会期望'Invoke'或者'BeginInvoke'能够正确的发送消息给那些还没有被创建或者已经被销毁的东西? 'PostMessage'也不适用于此。 – 2011-05-02 16:35:11
嗨科迪格雷,“用户定义的消息”是指C++中的WM_USER。在C++中,我们定义了像#define WM_UPDATE_TRANSACTION_STATUS WM_USER + 1这样的消息。你误解了,当线程在关闭或未准备好的表单中调用委托时,我们会多次遇到异常。我们认为PostMessage将解决这个问题。 – QuangND 2011-05-02 17:13:15