WinAPI回调函数的理解与查找制定标题窗口的实现(以参数形式传入回调函数)
我是一个比较懒的人,也因此很少有原创的blog,不过,这篇,我觉得有必要记录并发表,以供需要的人查阅。
对于Windows的函数EnumWindows,定义原型如下:
1
BOOL EnumWindows(
2![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
3
WNDENUMPROC lpEnumFunc, // pointer to callback function
4
LPARAM lParam // application-defined value
5
);
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
2
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
3
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
4
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
5
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
它有两个参数,第一个是回调函数的地址,第二个则是参数地址。对于这个函数的理解,我觉得就像是一个循环。
我对我的理解,用Delphi代码表示如下,希望各位可以指出不是之处:
![](https://www.cnblogs.com/Images/OutliningIndicators/ContractedBlock.gif)
由此可见,EnumWindows和EnumWindowsProc其实是可以传参数的。很遗憾,我在网上查找的相关文章中却
没有说明,EnumWindows的第二个参数都是传0进去,其实它可以传回调函数参数的地址!
以下是回调函数的实现代码:
![](https://www.cnblogs.com/Images/OutliningIndicators/ContractedBlock.gif)
代码中的ConsignorHanle是找到的窗体句柄,是一个全局变量。函数体中的内容可以根据需要修改。
现在关键的问题是,有没有可能实现参数的传出?如果哪位知道怎么实现将找到窗体的句柄传出,请留言,或联系