现在的位置: 首页 > 综合 > 正文

枚举顶级窗口函数EnumWindows和它的回调函数的使用!

2012年03月02日 ⁄ 综合 ⁄ 共 867字 ⁄ 字号 评论关闭

 首先是它的原型
BOOL EnumWindows(
     WNDENUMPROC lpEnumFunc,     // 回调函数的地址--说白了就是回调函数的名字放这
     LPARAM lParam               // 要是枚举桌面所有窗口添0或NULL就行
);
在来看看回调函数原型
BOOL CALLBACK EnumWindowsProc(
     HWND hwnd,         //句柄参数,这里返回的就是窗口句柄
     LPARAM lParam      // application-defined value--什么意思不知道,我是用不上
);
回调函数使用的时候一定要把上面的原型写出来,要一模一样,EnumWindowsProc这个函数名字可以
随便启的,比如:BOOL CALLBACK abcd(HWND hwnd,LPARAM lParam);把“;”去掉接函数体就可以了,函数体就是你要执行的代码,比如:
BOOL CALLBACK abcd(HWND hwnd,LPARAM lParam)
{
CString text;
int len=::GetWindowTextLength (hwnd);//获得窗口句柄hwnd指向的窗口标题长度
::GetWindowText (hwnd,(LPSTR)(LPCTSTR)text,len+1);获得窗口句柄hwnd指向的窗口标题
m_list.AddString ((LPSTR)(LPCTSTR)text);//m_list是指向列表框的CListBox m_list
return 1;//这里必须返回1,返回0就不在枚举了
}

 

 

example:

 

 

 BOOL   CALLBACK   MyEnumProc(HWND   hwnd,   LPARAM   lParam   )  
  {  
      printf("窗口句柄是%x,传递的参数是%d",   hwnd,   lParam);  
  }  
  main  
  {  
      int   n=3;//任意的一个参数  
      EnumWindows(MyEnumProc,   (LPARAM)n);  
      ...  
  }

抱歉!评论已关闭.