api里的定义的Notification和Message有什么区别?

tsys2000 2005-09-29 09:15:03
api里的定义的Notification和Message有什么区别?
...全文
377 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
菜牛 2005-10-03
  • 打赏
  • 举报
回复
Visual C++ 概念:添加功能

消息类别

为哪一种消息编写处理程序?有三种主要的消息类别:

Windows 消息
此类消息主要包括以前缀 WM_ 开头的消息,WM_COMMAND 除外。Windows 消息由窗口和视图处理。此类消息往往带有用于确定如何处理消息的参数。

控件通知
此类消息包括从控件和其他子窗口发送到其父窗口的 WM_COMMAND 通知消息。例如,当用户在编辑控件 (Edit Control) 中执行可能更改文本的操作后,该编辑控件 (Edit Control) 将向其父级发送包含 EN_CHANGE 控件通知代码的 WM_COMMAND 消息。该消息的窗口处理程序以某种适当的方式响应此通知消息,例如在控件中检索该文本。

框架像传送其他 WM_ 消息一样传送控件通知消息。但是有一个例外的情况,即当用户单击按钮时由按钮发送的 BN_CLICKED 控件通知消息。该消息被作为命令消息特别处理,并像其他命令一样传送。

命令消息
此类消息包括用户界面对象(菜单、工具栏按钮和快捷键)发出的 WM_COMMAND 通知消息。框架处理命令的方式与处理其他消息不同,可以使用更多种类的对象处理命令,详见命令目标中的解释。

Windows 消息和控件通知消息
类别 1 和 2 中的消息(Windows 消息和控件通知)由窗口来处理(窗口是从 CWnd 类派生的类的对象)。包括 CFrameWnd、CMDIFrameWnd、CMDIChildWnd、CView、CDialog 以及从这些基类派生的您自己的类。这些对象封装了 HWND(Windows 窗口的句柄)。

命令消息
类别 3 中的消息(命令)可以由范围更广的对象(文档、文档模板以及应用程序对象本身)处理,而不仅仅由窗口和视图处理。当某一命令直接影响到某个特定对象时,应当让该对象处理此命令。例如,“文件”菜单中的“打开”命令在逻辑上与应用程序相关联:该应用程序接收到此命令时会打开指定的文档。因此“打开”命令的处理程序是应用程序类的成员函数。有关命令及其如何传送到对象的更多信息,请参见框架调用处理程序的方式。

请参见
框架中的消息和命令

DrSmart 2005-10-03
  • 打赏
  • 举报
回复
定义的结构,看看头文件的定义
  • 打赏
  • 举报
回复
notifymessage一般是控件发出的,通知给父窗口
DrSmart 2005-09-29
  • 打赏
  • 举报
回复
总结:
SendNotifyMessag 和PostMessage 一样直道处理完成才返回
SendMessage是在发送 发送时立刻返回不等待

MSDN的介绍
SendMessage:--------------The SendMessage function sends the specified message to a window or windows. It calls the window procedure for the specified window and does not return until the window procedure has processed the message.

SendNotifyMessage:--------------The SendNotifyMessage function sends the specified message to a window or windows. If the window was created by the calling thread, SendNotifyMessage calls the window procedure for the window and does not return until the window procedure has processed the message. If the window was created by a different thread, SendNotifyMessage passes the message to the window procedure and returns immediately; it does not wait for the window procedure to finish processing the message.







junkuang 2005-09-29
  • 打赏
  • 举报
回复
SendMessage将消息发送给指定的窗口,等待接收纯种的应答
SendNotifyMessage将消息发送给指定的窗口,立即返回到调用线程,这一点与PostMessage一样,但SendNotifyMessage与PostMessage又有两点不同:
1、SendNotifyMessage将消息发送给另外的线程所创建的窗口时,发送的消息比存放在接收线程登记消息队列中的消息有更高的优先级,即由SendNotifyMessage函数存放在队列中的消息总是在PostMessage函数登记到队列中的消息之前取出;
2、SendNotifyMessage将消息发送给调用线程所创建的窗口时(即同一线程),SendNotifyMessage与SendMessage完全一样
布学无数 2005-09-29
  • 打赏
  • 举报
回复
能说得清楚点吗?
tsys2000 2005-09-29
  • 打赏
  • 举报
回复
skd里,比如说Keyboard Input
它下面分为
Functions
Messages
Notifications
Structures

上面的Messages和Notifications是根据什么划分的?

16,551

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Creator Browser
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧