关于GetActiveWindow和GetForegroundWindow:
最前的窗口不一定是激活的...比如说qq的主窗口,只要不靠到屏幕边上,就是总在最前的,你拖放一个ie过去是挡不住的,这时候,你用 GetActiveWindow得到的是有焦点的ie窗口,用GetForegroundWindow得到的是qq的窗口。
关于memset()函数:
void *memset(void *s, char ch, unsigned n);
“百科''介绍:将s所指向的某一块内存中的每个字节的内容全部设置为ch指定的ASCII值,
块的大小由第三个参数指定,这个函数通常为新申请的内存做初始化工作
用来对一段内存空间全部设置为某个字符,一般用在对定义的字符串进行初始化为 ‘ ’ 或 ‘/0’ ;
例 :char a[100];memset(a, '/0', sizeof(a));
memset 可以方便的清空一个结构类型的变量或数组。
如:
struct sample_struct
{
char csName[16];
int iSeq;
int iType;
};
对于变量
struct sample_strcut stTest;
一般情况下,清空 stTest 的方法:
stTest.csName[0]='/0';
stTest.iSeq=0;
stTest.iType=0;
用 memset 就非常方便:
memset(&stTest,0,sizeof(struct sample_struct));
如果是数组:
struct sample_struct TEST[10];
则
memset(TEST,0,sizeof(struct sample_struct)*10);
你刚分配的内存空间,或者是被你用过的内存空间里面的数据是不固定的
为了避免这些无用的数据给自己的程序带来影响,可以用memset把这些内存里面的数据置成某个数值
一般情况下是置0。当然,如果你的程序不会受这些无用数据影响,就不用做这个工作了