关于win32程序如何共享数据

今天静下心来把程序写完了。

关于win32程序如何共享数据

代码在下面。

 

前几天说sendmessage这 个api函数 不能传递参 数。看了别人写的代码,其实是可以的。

自己定义一个消息,也可以用标准的 消息。

比如自己定义一个#define WM_MYINFO      WM_USER+1的消息

在对话框里得到数据,GetDlgItemText(hDlg,IDC_EDIT1,mystr,strlen(mystr));

发送数据的地址,转换为长整形,SendMessage(hWnd,WM_MYINFO,0,(long)&mystr);

在消息处理函数里,定义一个无类型 的指针,前几天边鹏飞所说的好像也是这个意思,void *lpSizeData;然后把消息附带的两个长整形变量进行赋给lpSizeData,lpSizeData=(void *)lParam;

定义一个字符数组接受数据 char str[30];

memcpy(str,lpSizeData,sizeof(str));

这种方法,就可以发送任何类型的数 据了。但是只能是对话框发给主窗口,在对话框之间却不行,而且主窗口也不能发给一个对话框。可能父子关系的窗口之间的通信另有方法。

我看的书都没有明确的讲这个,我想 是不是作者把这些好东西藏起来不可告人啊。

我自己是看别人的代码,有些启发,然后自己写代码测试才试出来的。我觉得很操蛋,为了学习一点知识,费的劲太 多。

32位操作系统之所以是32位操作系统,内存地址是32位的,消息是32位的,如果不一样,有些事情还真办不到。

我觉得通过sendmessage传 递数据这样很很合 理,刚开始写的程序都是在对话框里处理数据。但是一个对话框不一定能够拥有所有函数需要的数据。还有,对话框要重用好几次,数据有好几种处理方式,如果在 对话框里处理数据,程序会很复杂,在这个过程中体会到,对话框只是接受数据的一个工具。

sendmessage把 数据传递到主窗口,然后依据消息处理函数来处理数据,这很符合windows编程里消息驱动的程序的思想。也有问题,一个功能的函数可能需要接受好几个消息发来的消息。这样不同步的情况只好定义static类型的变量来存放数据,我觉得这不是一个 好的解决问题的办法。

 

本文出自 “不曾远去” 博客,转载请与作者联系!

你可能感兴趣的:(Win32,职场,程序,休闲,数据共享)