re: bugfix:模板结构的跨平台差异 tanchuhan 2010-01-09 21:14
没必要用#pragma pack(1), 自己定义结构时记得对齐就是了,你看Windows里的绝大部分struct都是4字节对齐的(空位可以用reserved命名).
对齐肯定是有很多好处的,不然编译器干嘛费心去对齐结构里的字段.
re: 安全密码框的设计 tanchuhan 2009-12-22 21:52
good,楼主写的很好。
挑点小错误:
其实这是跟操作系统有关的,在WIN98下所用的进程是共享一个4GB的虚拟内存的,那个就没什么你的我的了,所有的都是大家共有的,所以一个进程对另一个进程发送一个WM_GETEXT消息,应为大家都是自己人所以密码就告你了。但是到了NT后各个进程就闹分家了,每个进程独享4GB的虚拟内存,各个进程之间是互相隔离的,所以就没人理你了。
---------------
Win95/98和NT都是一样的进程有各自的4G寻址空间(其中前面的1G/2G被系统保留,用来装载系统DLL什么的)
WM_GETTEXT可以跨进程获取文本是微软为了向后(win3x)兼容而作出特别处理的。照常理WM_GETTEXT的lParam非本进程指针,直接写数据会崩溃。而微软检查到这条消息后特别处理,先在本进程new一段缓冲区,等WM_GETTEXT接收者写完后,再复制回发送者进程的那段缓冲区。然后返回结果。
win9x和NT密码框对WM_GETTEXT的不同反应是因为后者考虑了安全性,而特意禁止的。
所以这和虚拟内存是否共享无关。