如何用WM_copydata消息传递一个结构?(100分)

  • 主题发起人 主题发起人 laotan
  • 开始时间 开始时间
L

laotan

Unregistered / Unconfirmed
GUEST, unregistred user!
我用WM_Copydata消息实现了应用程序间的字符串传递,但传递结构不行,请高手指点
 
如果结构中没有字符串(String), 指针(Pointer), 类(Class), 动态数组等之类的东西可以<br>直接传如果有那些成员的话需要特殊处理, 即将结构内容按一定顺序写入一块Buffer<br>中, 然后将Buffer的地址作为lpData域传递过去, 接受方需要自己从Buffer中读取结构<br>中的成员.
 
我也需要传递结构,请问如何传递?包含结构和pointer(文件0醒2
 
请给出一个详细的例子...<br>比如:<br>&nbsp; 传递如下消息:<br>&nbsp; struct<br>&nbsp; {<br>&nbsp; &nbsp; int a;<br>&nbsp; &nbsp; int b;<br>&nbsp; &nbsp; LPSTR *pfileptr;<br>&nbsp; }_sendInfo Info
 
to jame:<br><br>var<br>&nbsp; buffer: string;<br>&nbsp; dt: TCopyDataStruct;<br>begin<br>&nbsp; SetLength(Buffer, SizeOf(Integer) * 2 + StrLen(YourStruct.pFilePtr) + 1);<br>&nbsp; &nbsp; &nbsp; &nbsp; // 你的结构中数据的实际长度<br>&nbsp; Move(YourStruct.a, Buffer[1], SizeOf(Integer)*2); &nbsp;// 复制你的结构中的a和b到bufffer中<br>&nbsp; Move(YourStruct.pFilePtr^, Buffer[SizeOf(Integer)*2 + 1], StrLen(YourStruct.pFilePtr) + 1); // 复制你结构中的pFilePtr(包括结尾字符#0)到buffer中<br>&nbsp; with dt do<br>&nbsp; begin<br>&nbsp; &nbsp; dwData := 0;<br>&nbsp; &nbsp; dbData := Length(Buffer);<br>&nbsp; &nbsp; lpData := PChar(Buffer);<br>&nbsp; end;<br>&nbsp; SendMessage(OtherHandle, &nbsp;WM_COPYDATA, Form.Handle, Integer(@dt));<br>end;<br><br>ok?<br><br>BTW: jame下次能给分吗?
 
可以呀...但是我怎么给你分呀?指导我..立刻给<br>还有问题:<br>我不会使用listview控件里面的详细资料状况时候的所列控制,那个时候我怎么取得其他列的信息?<br>比如:<br>&nbsp; &nbsp; &nbsp; &nbsp;Name &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; code<br>&nbsp; &nbsp; &nbsp; &nbsp;1111 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; all<br>&nbsp; &nbsp; &nbsp; &nbsp;2222 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; prive<br>我怎么取得code列的信息?和设置该信息 &nbsp; ?我使用items不行...总是取得第一列的
 
对了我的问题是如果别人发给我这个结构的消息,我怎么接收?
 
接受答案了.
 
我打算使用WM_COPYDATA消息在不同的程序间传递数据,这些数据包括:文件夹、文件等等,<br>请问在我的接收程序中如何将它们一一分解出来,得到这些文件夹和文件的名称?<br>请不吝赐教!<br>谢谢!<br>
 
后退
顶部