EnumWindows

EnumWindows

目录

函数功能
函数原型
返回值
备注
速查
举例

编辑本段函数功能

  该函数枚举所有屏幕上的顶层窗口,并将 窗口句柄传送给 应用程序定义的 回调函数。 回调函数返回FALSE将停止枚举,否则EnumWindows函数继续到所有顶层窗口枚举完为止。

编辑本段函数原型

  BOOL EnumWindows(WNDENUMPROC lpEnumFunc,LPARAM lParam);
  参数:
  lpEnumFunc:指向一个 应用程序定义的 回调函数 指针,请参看 EnumWindowsProc。
  lPararm:指定一个传递给 回调函数的 应用程序定义值。
   回调函数原型
  BOOL CALLBACK  EnumWindowsProc(HWND  hwnd,LPARAM  lParam);
  参数:
  hwnd:顶层窗口的句柄
  lparam: 应用程序定义的一个值(即EnumWindows中lParam)

编辑本段返回值

  如果函数成功,返回值为非零;如果函数失败,返回值为零。若想获得更多 错误信息,请调用GetLastError函数。

编辑本段备注

  EnumWindows函数不列举子窗口。
  在循环体中调用这个函数比调用GetWindow函数更可靠。调用GetWindow函数中执行这个任务的 应用程序可能会陷入死循环或指向一个已被销毁的窗口的句柄。

编辑本段速查

  Windows NT:3.1以上版本;Windows:95以上版本;Windows CE:1.0以上版本;
  头文件:winuser.h中声明,包含 windows.h即可.
  库文件:user32.lib。

编辑本段举例

  代码VC++ MFC(列举所有 桌面窗口,窗口标题放在 全局变量string buf[] 数组中,n是 静态变量):
  BOOL CALLBACK lpEnumFunc(HWND hwnd, LPARAM lParam)
  {
  char str[100];
  ::GetWindowText(hwnd,str,sizeof(str));
  buf[n++]=str;
  return 1;
  }
  void CEnumWindowsDlg::OnOK()
  {
  // TODO: Add extra validation here
  n=0;
  EnumWindows(lpEnumFunc,NULL);
  int i;
  for(i=0;i<n;i++)
  {
  if(buf !="")
   m_list.AddString(buf.c_str());
   }
  //CDialog::OnOK();
   }
  

你可能感兴趣的:(EnumWindows)