`
luowei31
  • 浏览: 81225 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

sendmessage()和postmessage()使用的注意事项

 
阅读更多
向主事件循环外传递消息可能会引起不可预知的问题。例如,在主事件循环外通过sendmessage()向winproc()直接传递一个消息,可以终止窗口。但是如果按正常规程那样做本以为主事件循环中的事件句柄会处理该消息,则会产生一个超出执行次序的故障,这表示本以为事件B在事件A之后发生,但是在某些情况下事件B在事件A之前发生了。这是传递消息时容易出现的典型问题,因此一定要确认深思熟虑,postmessage()通常更安全一些,因为它不会跳出事件序列。
分享到:
评论

相关推荐

    SendMessage函数完全使用手册

    **五、SendMessage的注意事项** 1. **线程安全**:由于SendMessage是同步的,因此在多线程程序中使用时需要注意避免死锁问题。 2. **消息处理时间**:如果接收窗口处理消息的时间过长,可能会导致调用线程被阻塞较...

    sendmessage vc

    通过分析和运行这个文件,我们可以更深入地理解`SendMessage`在具体项目中的应用和注意事项。为了进一步学习和实践,建议读者尝试编写一个简单的VC项目,创建窗口,并在不同场景下使用`SendMessage`,观察其效果。 ...

    SendMessage该函数能将指定的消息发送到一个或多个窗口2

    在【标题】和【描述】中,我们了解到`SendMessage`的功能是向一个或多个窗口发送消息,并且它会等待消息处理完毕后再继续执行后续代码,这与`PostMessage`函数的工作方式有所不同。 **`SendMessage`函数的基本语法...

    sendMessage手机短信

    本篇文章将深入探讨如何在Java环境中使用sendMessage来发送手机短信,以及相关的技术和注意事项。 首先,Java中的sendMessage通常涉及到使用SMS (Short Message Service) API。在Android系统中,可以利用SmsManager...

    MFC自定义消息示例

    使用`PostMessage`可以在不同线程间传递消息,而`SendMessage`会在发送线程等待消息被处理完才会返回,可能导致线程阻塞。 六、注意事项 - 自定义消息的ID必须确保全局唯一,以避免与其他消息冲突。 - 在派发消息时...

    《Windows程序设计》中文chm版

    在Windows API部分,作者会详细阐述API函数的作用、参数及使用方法,如CreateWindow用于创建窗口,SendMessage和PostMessage则用于在不同线程间传递消息。同时,书中还会涵盖GDI(Graphics Device Interface)和用户...

    [VB] 接收自定义进程消息

    Windows API提供了丰富的函数和结构,如`SendMessage`、`PostMessage`、`CreateWindow`等,用于创建、发送和接收消息。 1. **自定义进程消息**: - 使用`RegisterWindowMessage`函数注册一个自定义的消息ID。这个...

    VC_API.rar_C++ API函数_VC API

    4. **窗口和GUI**:CreateWindow、ShowWindow用于创建和显示窗口,SendMessage、PostMessage用于发送和接收窗口消息,GetDlgItem、SetDlgItemText用于对话框控件的交互。 5. **输入输出**:GetAsyncKeyState、...

    Window_API_函数大全

    2. **消息机制**:Windows API基于消息驱动模型,SendMessage、PostMessage、PeekMessage和GetMessage函数用于发送、post、检查和接收消息。而DispatchMessage则负责将接收到的消息分发给相应的窗口过程。 3. **...

    应用源码之HandlerMessage2.zip

    - 在子线程中,使用`Handler`的`sendMessage()`或`post()`方法发送`Message`或`Runnable`对象。 - 子线程中的`Message`会被添加到主线程的`Looper`消息队列中,等待主线程的`Looper`取出并交给对应的`Handler`处理...

    vc知识点总结

    **SendMessage 和 PostMessage** - **功能**: - `SendMessage`: 直接发送消息给窗口,并等待消息处理完成。 - `PostMessage`: 只是将消息添加到消息队列中,并不等待消息处理。 - **用途**: - `SendMessage` 适用...

    hander_sy1.rar_android

    开发者可以使用`obtainMessage()`方法创建Message对象,然后通过`sendMessage()`或`postMessage()`将其发送到Handler。 3. **Looper** Looper是Handler的幕后工作者,它负责在一个线程中循环地获取并分发消息。...

    android中的handler的使用方法

    使用`sendMessage()`或`post()`方法发送消息。Message对象包含消息ID、额外数据等,而Runnable则包含执行的代码块。`sendMessageDelayed()`和`postDelayed()`可以设置延迟执行。 3. **处理消息** 当Handler的`...

    C#监控其他程序控件值

    一旦获取成功,我们可以使用`GetWindowText`函数获取控件的文本值,或者使用`SendMessage`或`PostMessage`函数发送特定的消息以读取或更改控件的状态。 4. **源代码解析** 提供的“窗体句柄Demo 1.1”源代码中,...

    Android中handler的使用

    使用`sendMessage()`或`post()`方法向MessageQueue中添加消息。`sendMessage()`通常用于发送带有特定命令的消息,而`post(Runnable r)`常用于执行一个Runnable对象。 3. **处理消息**: 在Handler的`...

    700个Vb API(电子书 CHM 教程)

    3. **窗口和消息处理**:如CreateWindowEx、SendMessage、PostMessage等,用于窗口的创建、事件处理。 4. **图形绘制**:如GDI(Graphics Device Interface)函数,如CreateDC、SelectObject、MoveToEx等,用于在...

    Winapi32函数说明

    4. **SendMessage** 和 **PostMessage**:发送消息到目标窗口,用于跨线程通信。 5. **LoadLibrary** 和 **GetProcAddress**:动态链接库(DLL)的使用,加载函数地址。 6. **CreateProcess** 和 **TerminateProcess...

    richedit 使用手册

    - **消息映射**:对于ActiveX控件中没有映射的消息,需要直接发送Windows消息,例如使用`SendMessage`或`PostMessage`函数。 - **属性与消息的关系**:虽然一些高级特性可能没有直接对应的属性,但可以通过发送特定...

    windows_API.rar_API_API 函数_API函数_windows api

    2. **消息处理**:如PostMessage、SendMessage和PeekMessage等,用于应用程序之间或应用程序与操作系统之间的消息传递。 3. **图形设备接口(GDI)**:如CreateDC、SelectObject、DrawText和BitBlt等,用于图形绘制...

    MFC子线程访问/控制对话框程序控件

    9. **注意事项** - 避免直接修改对话框控件的属性,应通过调用成员函数或发送消息来改变控件状态。 - 确保在子线程结束时正确清理资源,以防止内存泄漏或资源冲突。 总之,MFC子线程访问或控制对话框控件涉及线程...

Global site tag (gtag.js) - Google Analytics