CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
不看会后悔的Windows XP之经验谈 简单快捷DIY实用家庭影院
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  C++ Builder >  基础类

怎样才能找出同一窗体类创建的窗体

楼主g60sl22c()2005-07-20 15:42:22 在 C++ Builder / 基础类 提问

我有这样的需要,在一应用程序,找出另一程序中的一个窗体类创建的所有窗体,然后将这些窗体名做个列表.  
  Screen->Forms[i]这个只能找出本程序所有窗体,不行.  
  HWND   FindWindow(  
   
          LPCTSTR   lpClassName, //   pointer   to   class   name  
          LPCTSTR   lpWindowName   //   pointer   to   window   name  
        );  
  这个又只能找出一个,我想找出所有同一窗体类创建的不同名字窗体,有什么办法? 问题点数:20、回复次数:7Top

1 楼Maconel(Maconel)回复于 2005-07-20 16:49:22 得分 0

HWND   FindWindowEx(  
      HWND   hwndParent,             //   handle   to   parent   window  
      HWND   hwndChildAfter,     //   handle   to   a   child   window  
      LPCTSTR   lpszClass,         //   pointer   to   class   name  
      LPCTSTR   lpszWindow         //   pointer   to   window   name  
  );  
  Top

2 楼g60sl22c()回复于 2005-07-20 17:41:59 得分 0

上面的函数也只能发现一个窗体呀Top

3 楼Maconel(Maconel)回复于 2005-07-20 17:59:17 得分 0

第二个参数hwndChildAfter,可以指定从这个窗口之后开始查找,也就是查找下一个。  
  例如下面代码,就是查找所有以桌面为父窗体,类名为“#32770”的窗体,并将他们的text显示在ListBox中。  
   
  HWND   hWnd   =   NULL;  
  while   ((hWnd   =   FindWindowEx(NULL,   hWnd,   "#32770",   NULL))   !=   NULL)  
  {  
          char   arr_cText[MAX_PATH];  
          GetWindowText(hWnd,   arr_cText,   MAX_PATH);  
          ListBox1->Items->Add(arr_cText);  
  }  
  Top

4 楼Maconel(Maconel)回复于 2005-07-20 18:02:30 得分 20

GetWindow函数和EnumWindows函数,也可以遍历所有的窗体。  
  然后用GetClassName函数可以取得这个窗体的类名,以次可以判断是否为你需要的窗体。  
  这几个函数的具体用法,自己去查相关资料吧。Top

5 楼g60sl22c()回复于 2005-07-20 18:31:43 得分 0

我是有点说得不清的,我要找寻的窗体是   不是自己编的软件的插件,所以主窗体是不同的,而插件窗体名也因用在不同软件而有所不同Top

6 楼g60sl22c()回复于 2005-07-20 19:07:19 得分 0

改为以下这样   编译又出错  
  HWND   hWnd   =   NULL;  
  while   ((hWnd   =   FindWindowEx(NULL,   hWnd,   NULL,   Ttoolwin))   !=   NULL)  
  {  
          char   arr_cText[MAX_PATH];  
          GetWindowText(hWnd,   arr_cText,   MAX_PATH);  
          ListBox1->Items->Add(arr_cText);  
  }  
  Ttoolwin是另一程序上的窗体类名,编译说无定义Top

7 楼g60sl22c()回复于 2005-07-20 21:37:48 得分 0

终于看明白,多谢Maconel(Maconel).Top

相关问题

  • 如何创建一个另类窗体?
  • 窗体的创建
  • 如何在一个窗体里动态创建不确定个同一组件?
  • 基类窗体
  • [简单送分]请问如何在主窗体或子窗体判断另一MDI子窗体正在显示,或已经Close掉?(如何防止二次创建显示同一子窗体)
  • 动态创建窗体?
  • 创建窗体的问题
  • 窗体的创建问题
  • 创建模式窗体
  • 窗体创建和释放?

关键词

  • 函数
  • null
  • 窗体
  • ctext
  • 类
  • hwnd
  • 创建
  • arr
  • findwindowex
  • 查找

得分解答快速导航

  • 帖主:g60sl22c
  • Maconel

相关链接

  • CSDN Blog
  • 技术文档
  • 代码下载
  • 第二书店
  • 读书频道

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo