窗口之间如何通信?(100分)

  • 主题发起人 主题发起人 DancingAgain
  • 开始时间 开始时间
D

DancingAgain

Unregistered / Unconfirmed
GUEST, unregistred user!
窗口之间要互传数据,请问用甚末方法好?
如果用一窗口向另一窗口发消息的方法,如何传递数据?(消息参数不够用时)
 
以前曾经讨论过这个问题,好像有以下几种方法:
1。 发送Message,构做一种协议,把数据块用Message的方法发送过去,
例如第一条消息表示后面有多少条消息是数据
2。 共享内存
3。 用文件共享,发送消息通知数据就绪和处理完毕
4。 用WM_COPYDATA
5. 或者其他进程间通讯机制都能用上
 
参数消息不够用???
不会把一个结构的地址作为lparam发送吗(wparam一般放发送者的handle)? 结构中可以是任何数据.
 
?结构的地址在不同的进程之间是不能乱用的
 
该说的都给pegasus说了。:-(
参数不够用时的解决办法可以是用共享内存,文件。
>>结构的地址在不同的进程之间是不能乱用的
但一个非常有意思的用法是wm_copydata,结构的地址空间是由系统维护的!
所以可以把一个结构指针做在COPYDATASTRUCT里,传到另一个窗口中(只要它
处理wm_copydata消息!!)
 
对,WM_COPYDATA是系统帮助映像了内存, :)
 
若把一个结构的地址作为lparam发送,赋值时会不会不允许把结构的地址赋给long word型?
我的Delphi知识实在少的可怜,甚至不知道结构的地址怎么表示。
 
Delphi中的地址用@前缀来获得,例如:
Var i: Integer;
@i就是 i的地址。
使用强制类型转换就行了:
Sendmessage(xxxxx, xxx, long(@i));
 
其实我一直对各数据类型的转换很糊涂,希望大家能帮助我 。
比如,整形和指针的转换。
 
不好意思,我知道怎么转换数据了。
 
>>发送Message,构做一种协议,把数据块用Message的方法发送过去,
例如第一条消息表示后面有多少条消息是数据
?
这是指后面的消息的参数其实就是数据?
 
对,:) 土吧!:)
 
多人接受答案了。
 
后退
顶部