枚举子窗口EnumChildWindows()的应用
2016-06-28 16:04
351 查看
1、
EnumChildWindows()函数的作用枚举子窗口(按顺序调用回调函数,并将子窗口的句柄传递给了回调函数)。函数原型:
BOOL WINAPI EnumChildWindows(
HWND hWndParent, //父窗口句柄
WNDENUMPROC lpEnumFunc, //回调函数
LPARAM lParam //自定义参数
);
回调函数的返回值将会影响到这个API函数的行为:如果回调函数返回true,则枚举继续直到枚举完成;如果返回false,则将会中止枚举
。函数原型如下:
BOOL CALLBACK EnumChildProc(HWND hwndChild,//子窗口句柄
LPARAM lParam //参数
)。
应用举例1:一个父窗口,当窗口改变大小时它的子窗口也要跟着改变,可以利用EnumChildWindows()。代码如下
MoveWindow()函数不仅能够移动窗口的位置,而且能够改变窗口的大小。
应用举例2:一个父窗口,当窗口移动时它的子窗口也要跟着移动位置,也可以利用EnumChildWindows()。
2、
EnumWindows()函数枚举屏幕上所有的顶层窗口,并将窗口句柄传递给自定义的回调函数。与EnumChildWindows类似,回调函数返回FALSE
将停止枚举,否则将继续到所有顶层窗口枚举完为止。
EnumChildWindows()函数的作用枚举子窗口(按顺序调用回调函数,并将子窗口的句柄传递给了回调函数)。函数原型:
BOOL WINAPI EnumChildWindows(
HWND hWndParent, //父窗口句柄
WNDENUMPROC lpEnumFunc, //回调函数
LPARAM lParam //自定义参数
);
回调函数的返回值将会影响到这个API函数的行为:如果回调函数返回true,则枚举继续直到枚举完成;如果返回false,则将会中止枚举
。函数原型如下:
BOOL CALLBACK EnumChildProc(HWND hwndChild,//子窗口句柄
LPARAM lParam //参数
)。
应用举例1:一个父窗口,当窗口改变大小时它的子窗口也要跟着改变,可以利用EnumChildWindows()。代码如下
#define ID_FIRSTCHILD 100 #define ID_SECONDCHILD 101 #define ID_THIRDCHILD 102 LONG APIENTRY MainWndProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam) { RECT rcClient; int i; switch(uMsg) { case WM_CREATE: for (i = 0; i < 3; i++) { CreateWindowEx(0, "ChildWClass", (LPCTSTR) NULL, WS_CHILD | WS_BORDER, 0,0,0,0, hwnd, (HMENU) (int) (ID_FIRSTCHILD + i), hinst, NULL); } return 0; case WM_SIZE: GetClientRect(hwnd, &rcClient); EnumChildWindows(hwnd, EnumChildProc, (LPARAM) &rcClient); return 0; . } return DefWindowProc(hwnd, uMsg, wParam, lParam); } BOOL CALLBACK EnumChildProc(HWND hwndChild, LPARAM lParam) { LPRECT rcParent; int i, idChild; idChild = GetWindowLong(hwndChild, GWL_ID); if (idChild == ID_FIRSTCHILD) i = 0; else if (idChild == ID_SECONDCHILD) i = 1; else i = 2; rcParent = (LPRECT) lParam; MoveWindow(hwndChild, (rcParent->right / 3) * i, 0, rcParent->right / 3, rcParent->bottom, TRUE); ShowWindow(hwndChild, SW_SHOW); return TRUE; }
MoveWindow()函数不仅能够移动窗口的位置,而且能够改变窗口的大小。
应用举例2:一个父窗口,当窗口移动时它的子窗口也要跟着移动位置,也可以利用EnumChildWindows()。
2、
EnumWindows()函数枚举屏幕上所有的顶层窗口,并将窗口句柄传递给自定义的回调函数。与EnumChildWindows类似,回调函数返回FALSE
将停止枚举,否则将继续到所有顶层窗口枚举完为止。
相关文章推荐
- [leetcode] 49. Group Anagrams
- EXCEL 替换内容
- Java通过SMS短信平台实现发短信功能
- makefile 获取shell命令的结果
- java微信开发API第三步 微信获取以及保存接口调用凭证
- 进入推送!
- windows定时执行kettle的job
- Fence Repair(poj 3253)
- Java 如何有效地避免OOM:善于利用软引用和弱引用
- [改善Java代码]线程优先级只使用三个等级
- 编译报错 :The method list(String, Object[]) is ambiguous for the type BaseHibernateDao<M,PK>
- 当执行php脚本时用户关闭浏览器会发生什么?
- CentOS 7最小化安装后找不到‘ifconfig’命令——修复小提示
- 超酷MWC四轴飞行器DIY全套教程
- Groovy学习笔记 一 、搭建
- greenplum数据库引擎探究
- Android中自定义View的状态保存
- js禁止页面刷新与后退的方法
- Fio安装、测试,Gfio图形化测试I/O读写性能
- 風姿花伝(ふうし かでん)