高手请进!关于消息队列的使用(回答全面再加分100)

AaronLiu 2002-08-26 11:16:24
怎样在windows下使用系统的消息队列,我有一个日志接口com,要从A机器写日志数据到另外一台机器B上的消息队列,在B机器上处理消息队列,将消息取出根据不同的消息写B机器上不同的日志表中。请问,我要怎样做,请高手给出具体步骤,比如要用到些什么函数。
谢谢
...全文
42 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
Hanzo 2002-08-28
  • 打赏
  • 举报
回复
试试MSMQ(Microsoft Message Queuing Services).查查MSDN.有介绍的.
或者http://www.microsoft.com/msmq
nuaawyd 2002-08-28
  • 打赏
  • 举报
回复
//////操作系统为当前所运行的每个应用程序中的每个UI线程,都维护一个自己的消息队列。每当产生消息时,操作系统将该消息放入相应应用程序的相应线程的消息队列中,线程再通过GetMessage从自己的这个消息队列中获得消息。

///////线程在第一次调用PeekMessage(大概是这个函数,我记不清了)时,为其创建数个消息队列,用于存放不同消息,但对我们表现为一个抽象的消息队列。
输入消息产生时,先让HOOK处理,然后发给当前获得输入焦点的程序或鼠标所在的窗口。其他消息或发给注册了指明要该消息的窗口,或就是有一个目标窗口(就是SendMessage之类)。

////////不是每个线程都有消息队列的,只有那些有调用UI函数的线程才会被分配一个THREADINFO结构,进而有它自己的消息队列。

windows有两种形式的消息队列,应用程序队列和系统队列。

有些消息是放在应用程序队列中的,比如某个窗口的一些重绘事件。
另外一些消息是放在系统队列中的,比如鼠标事件。

也就是说消息如果只与单个应用有关就会放在应用程序队列中,而与系统有关就会放在系统队列中。


1.队列消息和非队列消息

从消息的发送途径上看,消息分两种:队列消息和非队列消息。队列消息送到系统消息队列,然后到线程消息队列;非队列消息直接送给目的窗口过程。

这里,对消息队列阐述如下:

Windows 维护一个系统消息队列(System message queue),每个GUI线程有一个线程消息队列(Thread message queue)。


鼠 标、键盘事件由鼠标或键盘驱动程序转换成输入消息并把消息放进系统消息队列,例如WM_MOUSEMOVE、WM_LBUTTONUP、WM_KEYDOWN、WM_CHAR等等。Windows每次从系统消息队列移走一个消息,确定它是送给哪个窗口的和这个窗口是由哪个线程创建的,然后,把它放进窗口创建线程的线程消息队列。线程消息队列接收送给该线程所创建窗口的消息。线程从消息队列取出消息,通过Windows把它送给适当的窗口过程来处理。


除了键盘、鼠标消息以外,队列消息还有 WM_PAINT、WM_TIMER和WM_QUIT。


这些队列消息以外的绝大多数消息是非队列消息。


2.系统消息和应用程序消息

从消息的来源来看,可以分为:系统定义的消息和应用程序定义的消息。

系统消息ID的范围是从0到WM_USER-1,或0X80000到0XBFFFF;应用程序消息从WM_USER(0X0400)到0X7FFF,或0XC000到0XFFFF;WM_USER到0X7FFF范围的消息由应用程序自己使用;0XC000到0XFFFF范围的消息用来和其他应用程序通信,为了ID的唯一性,使用::RegisterWindowMessage来得到该范围的消息ID。


gambler2 2002-08-28
  • 打赏
  • 举报
回复
我觉得他问的好像是Message Queue方面的,
可以把消息存为一种固定格式的文件,然后两边统一处理,
我以前用过消息队列的东西,不过是IBM的MQ Series
zhakewei 2002-08-27
  • 打赏
  • 举报
回复
没有编写过,给你一些建议,首先的两台机器的通讯,使用rpc或者相关的dongxi,第二的进程的操作函数,第三,拦截消息的hook,觉得最基本的应该是这几个了
nbgyf 2002-08-26
  • 打赏
  • 举报
回复
看一下这篇文章:
http://tech.china.com/zh_cn/netschool/programme/c/656/20001207/01_12.html

看完之后问题应该就解决了
ThisTimeThree 2002-08-26
  • 打赏
  • 举报
回复
他指的说不定是,Message Queue,是吧,我不会帮你up或者也许看看书会知道

16,548

社区成员

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

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

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