描述:
无意看见通视网上的股票分析软件开发文档,顺便研究了起来,但是有个问题始终也想不明白,做和很多次的实验也没有结果,现在拿到着来请教大家.
希望大家有技术的说说,没技术的捧个场啊.谢谢
是这样的:
在股票接收引擎的接口文档的例子中是通过向分析软件发送自定义的消息ONMYMESSAGE(wParam wparam,lParam lparam)来传递数据的地址,其中wParam wparam是消息类型,lParam lparam是数据地址,然后通过RCV_DATA* PHead=(RCV_DATA*)lparam就可以得到股票数据了.
关于这一点我想不明白,做了好多实验,也不可以实现.
我翻了很多书,资料,关于内存共享的几种方式,例如WM_COPY,MAPFILEVIEW等等,都需要在消息接收软件中做一定的编码工作,比如WM-DATA消息,接收软件要响应WM-DATA消息,而不是自定义消息.MAPFILEVIEW需要在接收软件中做打开共享内存操作,才能读.
但是在股票接收引擎的接口文档的例子并没有这些操作,而是直接得到地址,然后转化成相应数据结构的.
这样的共享内存是怎么实现的呢?
希望大家能多给点意见.谢谢
如果大家需要下栽,请到http://www.tongshi.com/xzzx_vbi_kaifa.htm下栽windows股票驱动接口(买卖盘5),测试版· ,即可看见,谢谢.
解决方案1:
wParam和lParam是消息的两个参数,
可以看看ms的MSG定义
MSG
The MSG structure contains message information from a thread's message queue.
typedef struct tagMSG { // msg
HWND hwnd;
UINT message;
WPARAM wParam;
LPARAM lParam;
DWORD time;
POINT pt;
} MSG;
再看看参数的定义
typedef UINT WPARAM;
typedef LONG LPARAM;
很显然,这是4个字节的,应该是一个指针,其指向的内存块可以实现跨进程数据传送,
这个部分的内存,应该是windows的消息机制管理的,
具体怎么回事儿,我也不太清楚,不过我自己写程序的,send方负责分配内存,receive方没有释放内存,也没有提示什么错误,