CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
山寨机中的战斗机! 程序优化工程师到底对IT界有没有贡献
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  VC/MFC >  基础类

如何获得对话框子窗口的句柄??用AfxGetMainWnd可以获得主窗口的句柄。

楼主angelcool(快乐需要创造)2005-04-05 16:05:49 在 VC/MFC / 基础类 提问

void   ASEnumWnd::OnBUTTONEnumWnd()    
  {  
  m_WndListBox.ResetContent(); //一次清空  
  if   (!::EnumWindows((WNDENUMPROC)enumProc,   0))  
  AfxMessageBox("Error");  
  Invalidate(true);  
  }  
   
  //枚举当前所有窗口并显示在ListBox中.  
  BOOL   CALLBACK   enumProc(HWND   hwnd,   LPARAM   lParam)  
  {  
  if   (hwnd   ==   NULL)  
  return   FALSE;  
  if   (::IsWindow(hwnd)   &&   ::IsWindowVisible(hwnd)   )  
  {  
  TCHAR   szCap[255]   =   {0};  
  ::GetWindowText(hwnd,   szCap,   255);  
  ASEnumWnd   *pDlg   =   (ASEnumWnd*)::FindWindow(NULL,   "程序列表");  
                                                                                                                                                //?????  
  pDlg->m_WndListBox.AddString(szCap);  
  }  
  return   TRUE;  
  }  
  我本想通过这句获得该窗口的句柄,但是程序运行总是报错,直接就终止了。  
  ASEnumWnd   *pDlg   =   (ASEnumWnd*)::FindWindow(NULL,   "程序列表");  
  是否FindWindow这样转换后丢失了一些信息?  
  原来是用AfxGetMainWnd实现的,现在这个对话框是通过主窗口调用显示的,所以不能再用它了。  
  应该换成什么呢??  
  问题点数:50、回复次数:4Top

1 楼legendhui(秋天的叶子)回复于 2005-04-05 16:35:28 得分 40

FindWindow返回的是窗口句柄,你强制转换成指针了,应该  
  HWND   hwnd;  
  hwnd   =   ::FindWindow(NULL,   "程序列表");  
  CWnd   *wnd   =   FromHandle(hwnd);  
  Top

2 楼psprite(小皮)回复于 2005-04-05 16:37:09 得分 10

不能直接用GetDlgItem吗?如果如果是捕捉当前工作区的窗口可以直接用GetDlgItem取得指定控件ID的窗口指针.  
  如果要根据条件捕获其他进程的窗口可以做以下操作  
  HWND   g_hParantWnd   =   ::FindWindow(NULL,   "程序列表");  
  HWND   hWnd   =   ::FindWindowEx(g_hParantWnd,   NULL,   "AfxWnd42",   NULL);  
  HWND   hChild   =   ::GetDlgItem(hWnd,ID);//ID为窗口中指定控件ID,可以通过Spy++查找  
  CListBox     x;  
  x.Attach(hChild);Top

3 楼angelcool(快乐需要创造)回复于 2005-04-05 16:47:03 得分 0

to     legendhui(何离心之可同兮,吾将远逝以自疏)    
  抛错:  
  error   C2065:   'FromHandle'   :   undeclared   identifierTop

4 楼legendhui(秋天的叶子)回复于 2005-04-05 17:01:59 得分 0

使用全局函数试试::FromHandleTop

相关问题

  • 窗口句柄
  • 窗口句柄
  • 窗口句柄
  • 窗口句柄
  • 窗口的句柄
  • 取窗口句柄?
  • 关于dll窗口句柄
  • 窗口句柄是啥?
  • iframe有窗口句柄吗?
  • 得不到窗口句柄!

关键词

  • null
  • 句柄
  • asenumwnd
  • szcap
  • hwnd
  • findwindow
  • 获得
  • pdlg
  • 程序列表
  • getdlgitem

得分解答快速导航

  • 帖主:angelcool
  • legendhui
  • psprite

相关链接

  • Visual C++类图书
  • Visual C++类源码下载

广告也精彩

反馈

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