枚举子窗口EnumChildWindows()的应用
1、
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 = ; i < ; i++)
{
CreateWindowEx(,
"ChildWClass",
(LPCTSTR) NULL,
WS_CHILD | WS_BORDER,
,,,,
hwnd,
(HMENU) (int) (ID_FIRSTCHILD + i),
hinst,
NULL);
} return ; case WM_SIZE:
GetClientRect(hwnd, &rcClient);
EnumChildWindows(hwnd, EnumChildProc, (LPARAM) &rcClient);
return ; .
}
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 = ;
else if (idChild == ID_SECONDCHILD)
i = ;
else
i = ; rcParent = (LPRECT) lParam;
MoveWindow(hwndChild,
(rcParent->right / ) * i,
,
rcParent->right / ,
rcParent->bottom,
TRUE); ShowWindow(hwndChild, SW_SHOW); return TRUE;
}
MoveWindow()函数不仅能够移动窗口的位置,而且能够改变窗口的大小。
应用举例2:一个父窗口,当窗口移动时它的子窗口也要跟着移动位置,也可以利用EnumChildWindows()。
2、
EnumWindows()函数枚举屏幕上所有的顶层窗口,并将窗口句柄传递给自定义的回调函数。与EnumChildWindows类似,回调函数返回FALSE
将停止枚举,否则将继续到所有顶层窗口枚举完为止。
枚举子窗口EnumChildWindows()的应用的更多相关文章
- [原创]C#应用WindowsApi实现查找\枚举(FindWindow、EnumChildWindows)窗体控件,并发送消息。
首先介绍基本WindowsApi: public static extern IntPtr FindWindow(string lpClassName, string lpWindowName); 函 ...
- Qt Widgets——子区域和子窗口
QMdiArea 一般使用于主窗口QMainWindow,用于容纳多个子窗口QMdiSubWindow qt creator 3.0的设计师有MdiArea可直接拖入使用. 界面如下,图中灰色框即是个 ...
- PyQt(Python+Qt)学习随笔:containers容器类部件QMdiArea多文档界面的QMdiSubWindow子窗口相关属性和操作方法
专栏:Python基础教程目录 专栏:使用PyQt开发图形界面Python应用 专栏:PyQt入门学习 老猿Python博文目录 1.增加子窗口 QMdiArea中的子窗口类型是QMdiSubWind ...
- JavaScript子窗口调用父窗口变量和函数的方法
在做一个父窗口开启子窗口并且在子窗口关闭的时候调用父窗口的方法,达到局部刷新的目的. 父窗口: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 ...
- 【2016-11-6】【坚持学习】【Day21】【子窗口关闭时,同步关闭它的主窗口(方法二)】
根据上文,在子窗口设置一个委托.然后在子窗口关闭事件,执行委托实例,然后在主窗口增加监听委托的方法.... 想想,本事关闭事件就是一个特殊的委托.那么干嘛还要特意去声明一个新的呢?多此一举. 于是有下 ...
- FineUI小技巧(5)向子窗口传值,向父窗口传值
前言 FineUI中经常会用到启用IFrame的Window控件,这样有助于从物理上进行代码解耦和.IFrame的引入就会涉及传值问题,如何在父窗口和子窗口之间相互传值呢? 向子窗口传值 向子窗口传值 ...
- jquery 获取父窗口的元素 父窗口 子窗口
一.获取页面元素 取父窗口的元素方法:$(selector, window.parent.document); 那么你取父窗口的父窗口的元素就可以用:$(selector, window.parent ...
- 更新记录后关闭子窗口并刷新父窗口的Javascript
有时我们需要在新打开的窗口里面编辑信息,等编辑完了,需要将当前窗口关闭并且刷新父窗口,以使修改生效,本文就是介绍用 javascript 来实现"更新记录后关闭子窗口并刷新父窗口" ...
- JS实现关闭当前子窗口,刷新父窗口
一.JS实现关闭当前子窗口,刷新父窗口 JS代码如下: <script> function refreshParent() { window.opener.location.href = ...
随机推荐
- 问题2:input、textarea、submit 宽度设置为100%,但显示宽度不一致
<style type="text/css"> body{ padding: 10px; } input,textarea{ width: 100%; } </s ...
- Mac 动态库加载不上
OC xcode can't found xxx.dylib 1 targer- build phase :link binary with library添加动态库 注意不要将后边的选项选成opti ...
- 删除sslvpn用户
config user localedit xinghen unset two-factornextend config user groupedit vpngroup unselect member ...
- 干净的ssm框架项目
其中数据库只有如下表与字段 访问效果: 项目下载: 干净的ssm框架项目.rar
- swift4.2 - 一个自定义view弹框
import UIKit /* * 注册协议view:没找到 UI原图,咱不实现 */ class JYRegisterProtocolView: UIView { /// 点击同意协议的回调 pri ...
- iPhone X系列 的获取 - 安全区顶部和底部高度
///1. 获得当前窗口 var JY_WINDOW: UIWindow? { get{ if let app = UIApplication.shared.delegate as? AppDeleg ...
- java 爬虫
由于项目需求,综合了几种考虑方案,准备使用java 爬虫进行数据的获取,不用自己去费劲的想逻辑的实现 使用java爬虫之前,我们必须要掌握的知识: 1. 对前端HTML的元素有一定的认识 2. 使用h ...
- day 13 模块
模块 一个py文件,就是一个模块,一个模块是一些相似功能的集合体. # echo.py 定义一个模块. 下文都用这个 print('from echo 模块') name = 'echo' def f ...
- 小程序 picker 多列选择器 数据动态获取
需求是将各校区对应各班级的数据 以两列选择器的方式展示出来,并且可以在选择完成之后记录选结果参数. 校区数据 和 班级数据 分别是两个接口,以 校区 teach_area_id 字段关联 其各班级数据 ...
- (九)ROS安装rviz模拟器
一 . 什么是 rviz rviz : The ROS Visualization Tool ,即机器人操作系统3D可视化工具.它的作用就是:一个虚拟世界,用来模拟机器人在现实世界的运行效果. 简单的 ...