问一个超简单的问题,10分钟内结贴。

ruixing123 2009-12-08 04:26:25

BOOL CALLBACK ChildWndEnumProc(HWND hwnd, LPARAM lParam)
{
char lpCaption[256];

//获取窗口的标题
GetWindowText(hwnd, lpCaption, 255);

CString caption = lpCaption;

if(caption.Left(4) == "扫雷")
{
lParam = (LPARAM)hwnd;
return FALSE;
}

return TRUE;
}

BOOL ValidateWnd(HWND hwnd)
{
HWND childHwnd = NULL;

EnumChildWindows(hwnd,ChildWndEnumProc, (LPARAM)childHwnd);

if(childHwnd==NULL)
{
return FALSE;
}
else
{
return TRUE;
}
}


ChildWndEnumProc函数中的赋值是正确的,为什么ValidateWnd函数中得不到childHwnd返回的值?

谢谢。
...全文
244 18 打赏 收藏 转发到动态 举报
写回复
用AI写文章
18 条回复
切换为时间正序
请发表友善的回复…
发表回复
lwj006 2009-12-08
  • 打赏
  • 举报
回复
得分
ruixing123 2009-12-08
  • 打赏
  • 举报
回复
哎。。。那只能想这办法了。。。谢谢
pur_e 2009-12-08
  • 打赏
  • 举报
回复
一般是操作直接放在回调函数里

if(caption.Left(4) == "扫雷")
{
//放在这里进行操作

return FALSE;
}
pur_e 2009-12-08
  • 打赏
  • 举报
回复
可以用一个全局变量啊
sayhorse 2009-12-08
  • 打赏
  • 举报
回复
实在不行就将childHwnd 拉到外面做全局变量声明吧。。。
ruixing123 2009-12-08
  • 打赏
  • 举报
回复
那我如何在ValidateWnd函数中获取回调函数ChildWndEnumProc中hwnd的值呢?

谢谢
pur_e 2009-12-08
  • 打赏
  • 举报
回复
LPARAM lParam是传给回调函数的参数,如果是返回用的肯定会声明为引用的
ruixing123 2009-12-08
  • 打赏
  • 举报
回复
LPARAM lParam 不能作为返回参数使用?
pur_e 2009-12-08
  • 打赏
  • 举报
回复
额,刚查了资料
在调用EnumChildWindows 这个函数时,直到调用到最个一个子窗口被枚举或回调函数返回一个false,否则将一直枚举下去。

我觉得应该这样用吧:

bool bFound=EnumChildWindows(hwnd,ChildWndEnumProc, (LPARAM)childHwnd);
return bFound;
ruixing123 2009-12-08
  • 打赏
  • 举报
回复
ChildWndEnumProc函数中的赋值是正确的,(通过单步调试可以确认)

为什么ValidateWnd函数中得不到childHwnd返回的值?
kouwenlong 2009-12-08
  • 打赏
  • 举报
回复
EnumChildWindows这个函数的第二个参数是个回调函数的地址,在回调函数里。MSDN只说了返回TRUE就会继续枚举,返回FALSE就会停止枚举。
你的窗体里是否有"扫雷"这个标题
GARY 2009-12-08
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 freezezdj 的回复:]
引用 1 楼 pur_e 的回复:
应该用引用,改为
BOOL CALLBACK ChildWndEnumProc(HWND hwnd, LPARAM&lParam)
试试

UP
[/Quote]
顺便看看楼主是否在10分钟之内真的结贴了
——————————————————————————
JOYZML(菜鸟朱铭雷)
ruixing123 2009-12-08
  • 打赏
  • 举报
回复
char lpCaption[256] = {};

VC6编译器报错。。。:(
冻结 2009-12-08
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 pur_e 的回复:]
应该用引用,改为
BOOL CALLBACK ChildWndEnumProc(HWND hwnd, LPARAM&lParam)
试试
[/Quote]
UP
healer_kx 2009-12-08
  • 打赏
  • 举报
回复
PS:
还有这里:
char lpCaption[256] = {};
建议。
ruixing123 2009-12-08
  • 打赏
  • 举报
回复
EnumChildWindows要求的函数指针原型必须为BOOL CALLBACK ChildWndEnumProc(HWND hwnd, LPARAM lParam)
healer_kx 2009-12-08
  • 打赏
  • 举报
回复
你对第三个参数理解是错误的。
http://baike.baidu.com/view/1480216.htm?fr=ala0
pur_e 2009-12-08
  • 打赏
  • 举报
回复
应该用引用,改为
BOOL CALLBACK ChildWndEnumProc(HWND hwnd, LPARAM &lParam)
试试
Powerbuilder 9.0实用教程》源代码 1.本源代码包括以下章节源代码: 第01章 认识PowerBuilder 9.0、第05章 创建应用程序、第06章 创建窗体、第07章 创建菜单和工具栏、第10章 应用程序的调试和发布、第11章 典型小型实例赏析、第12章 图书管理系统实例和第13章 学生选课系统实例。 2.源代码使用方法参见《附录A 源代码的使用方法》文件。 __________________________________________________________________ 注意: 1.建议读者下载源文件后,将该源文件进行备份,读者使用副本源文件进行学习,这样一但出就不用再从网上下载了。 2.将源文件中“数据库文件”文件夹一定要复制到C盘根目录下,这样才能保证您连接数据库文件成功,具体方法参见《附录A 源代码的使用方法》。 对于书中源代码除了数据库外其他都能正常使用,而示例中数据库需要用户在自己的计算机上注册后才能使用,如果不注册数据源就运行应用程序是检索不到任何数据的,下面以连接学生选课系统数据库为例具体介绍如何连接数据库文件。 第1章 认识PowerBuilder 9.0 1 1.1 PowerBuilder 9.0简介 1 1.1.1 中国软件业现状 1 1.1.2 为什么要学习PowerBuilder 9.0 2 1.1.3 PowerBuilder的概述 2 1.1.4 PowerBuilder的特点 3 1.1.5 PowerBuilder 9.0的新特性 6 1.2 安装PowerBuilder 9.0软硬件需求 9 1.2.1 软件环境需求 9 1.2.2 硬件环境需求 9 1.3 PowerBuilder 9.0功能界面介绍 10 1.3.1 PowerBuilder 9.0界面简介 10 1.3.2 常用功能菜单 10 1.4 工作环境设置 16 1.4.1 工具栏的设置 16 1.4.2 窗口排列 19 1.4.3 快捷键设置 20 1.4.4 系统选项设置 21 1.5 用5分钟制作一个简单实例 22 1.5.1 实例运行界面 22 1.5.2 新建一个工作空间对象 22 1.5.3 新建一个应用程序对象 23 1.5.4 创建窗体 23 1.5.5 为应用程序添加open事件代码 25 1.6 小结 27 1.7 习题 27 第2章 编程基础知识 28 2.1 PowerScript脚本语言书写规则 28 2.1.1 忽略大小写 28 2.1.2 语句的断行、续行和分割 28 2.1.3 注释 29 2.2 数据类型 29 2.3 变量和作用域 30 2.3.1 定义变量 30 2.3.2 引用变量 30 2.3.3 变量的作用域 30 2.4 操作符 31 2.5 标识符 32 2.5.1 标识符的构成 32 2.5.2 匈牙利命名法 32 2.6 常用代词 33 2.7 控制语句 34 2.7.1 判断语句 34 2.7.2 循环语句 36 2.8 结构 38 2.8.1 创建结构 38 2.8.2 使用结构 40 2.9 函数 40 2.9.1 Open()和Close()函数 41 2.9.2 MessageBox()函数 41 2.9.3 类型转换函数 41 2.9.4 类型判断函数 42 2.9.5 其他函数 42 2.10 ODBC数据源与专用数据库接口 43 2.10.1 什么是ODBC数据源 43 2.10.2 专用数据库接口 43 2.10.3 连接数据库 44 2.10.4 配置ODBC 48 2.11 SQL语言 49 2.11.1 SQL语言的格式 49 2.11.2 在PowerBuilder 9中使用SQL语句 51 2.12 类和对象的概念 56 2.12.1 继承 57 2.12.2 重载和多态性 57 2.12.3 封装 57 2.12.4 属性、事件和函数 57 2.13 在PowerBuilder 9.0中实现面向对象编程 58 2.13.1 创建对象 58 2.13.2 设置对象属性 59 2.13.3 编写事件代码 59 2.13.4 实现继承对象 60 2.14 用户对象和用户事件 61 2.14.1 用户对象分类 61 2.14.2 定义用户对象 62 2.14.3 使用用户对象 64 2.14.4 用户事件 66 2.15 小结 67 2.16 习题 68 第3章 创建数据库 69 3.1 数

64,691

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧