mfc消息类型,mfc采用什么来处理信息

  mfc消息类型,mfc采用什么来处理信息

  Windows编程中一个比较原始的问题就是消息循环,现在已经很少有人关心了;

  我个人对消息流通比较感兴趣,很多细节想了解下!

  解释以下消息循环中的常见函数,以便进行比较。

  postmessage和SendMessage功能的比较

  SendMessage将消息直接发送到窗口,并调用该窗口相应的消息处理函数。直到消息处理功能完成,SendMessage才会返回!SendMessage发送的消息没有进入系统的消息队列;SendMessage函数有返回值。

  Message将消息发送到与创建窗口的线程关联的消息队列,并立即返回;PostMessage函数没有返回值;

  getmessage和PeekMessage函数的比较

  GetMessage(LPMSG lpMsg,HWND hWnd,UINT wMsgFilterMin,UINT wMsgFilterMax)

  PeekMessage(LPMSG lpMsg,HWND hWnd,UINT wMsgFilterMin,UINT wMsgFilterMax,UINT wRemoveMsg)

  根据参数可以看出以上两个函数的区别。参数wRemoveMsg的作用是指定获取消息的方式。如果将其设置为PM_NOREMOVE,则不会从消息队列中移除消息。如果设置为PM_REMOVE,消息将从消息队列中删除。

  存在差异:

  如果它们没有捕捉到消息,程序的主线程将被操作系统挂起。当操作系统再次回来处理这个线程时,它发现消息队列中仍然没有消息。此时,这两个函数的行为是不同的:

  GetMessage:如果你进不去,操作系统会再次挂起这个线程来照顾其他线程;

  PeekMessage:收回控制权,让程序执行一段时间,等待可能的消息进入消息队列并捕获;此时,程序进入空闲时间阶段;

mfc消息类型,mfc采用什么来处理信息