关于消息队列的创建和使用 ( 积分: 100 )

  • 主题发起人 主题发起人 x-dsl
  • 开始时间 开始时间
X

x-dsl

Unregistered / Unconfirmed
GUEST, unregistred user!
想请教高手几个问题<br>1.消息队列如何创建?<br>2.如何从消息队列里面获取消息?(获取完以后删除)<br>3.消息里面可否带参数(譬如说接收到一个画矩形的消息,我怎么定义消息里面的XY然后发送到对应的句柄?)(不需要等待返回)
 
想请教高手几个问题<br>1.消息队列如何创建?<br>2.如何从消息队列里面获取消息?(获取完以后删除)<br>3.消息里面可否带参数(譬如说接收到一个画矩形的消息,我怎么定义消息里面的XY然后发送到对应的句柄?)(不需要等待返回)
 
1. 只要你在当前线程中调用过PeekMessage, GetMessage等消息处理函数,windows会自动为当前线程创建消息队列<br>2. PeekMessage,GetMessage函数<br>3. 消息中可以带两个DWORD参数:WParam和LParam, 因此如果你要给其它进程传数据,那么可以传递的参数量很小,总共只有8个字节(除非使用系统WM_COPYDATA消息), 如果给自己进程中其它线程或窗口传消息,那么可以传任意类型,任意数量的参数, 只要把WParam和LParam当成指针传递给其它窗口就可以了,比如要传一个矩形, 可以在WParam中存入Rect结构的地址就搞定了。 当然,你必须控制好这些指针的释放时机,必须等对方处理完后再释放, 一个可行的办法是由发起者分配内存,由收到消息方释放(只适合本进程)。
 
接受答案了.
 

Similar threads

D
回复
0
查看
1K
DelphiTeacher的专栏
D
D
回复
0
查看
889
DelphiTeacher的专栏
D
D
回复
0
查看
1K
DelphiTeacher的专栏
D
D
回复
0
查看
948
DelphiTeacher的专栏
D
后退
顶部