MFC 记录 遍历窗口

    加深记忆------

  经常用到这些,做个记录!

这里列出两种遍历方式...

用到的函数原型:

 1 HWND GetWindow(
 2   HWND hWnd,  // handle to original window
 3   UINT uCmd   // relationship flag
 4 );
 5 
 6 HWND GetDeskTopWindow(VOID)
 7 
 8 int GetWindowText(
 9   HWND hWnd,        // handle to window or control with text
10   LPTSTR lpString,  // address of buffer for text
11   int nMaxCount     // maximum number of characters to copy
12 );
13 
14 //----代码
15 TCHAR chTitleText[MAX_PATH]={0}; //用来保存窗口标题
16 //在Windows下,所有窗口都为Windows的子窗口.
17 HWND nHwnd=::GetWindow(GetDeskTopWindow,GW_CHILD);
18 
19 //循环遍历出来
20 while(nHwnd!=NULL)
21 {
22     //获取窗口标题并且保存在数组里
23     ::GetWindowText(nHwnd,chTitleText,MAX_PATH);
24     //判断标题是否大于0,大于则输出
25     if(_tcslen(chTitleText)>0) MessageBox(chTitleText);
26     //继续下一次遍历
27     nHwnd = ::GetWindow(nHwnd,GW_HWNDNEXT);  
28 }

方式2,使用FindWindow

使用到的函数原型:

 1 //使用到的参数原型
 2 HWND FindWindow(
 3   LPCTSTR lpClassName,  // 类名
 4   LPCTSTR lpWindowName  // 标题名
 5 );
 6 HWND FindWindowEx(
 7   HWND hwndParent,      // 父窗口句柄
 8   HWND hwndChildAfter,  // 子窗口句柄
 9   LPCTSTR lpszClass,    // 类名
10   LPCTSTR lpszWindow    // 标题名
11 );
12 
13 int GetWindowText(
14   HWND hWnd,        // 要获取标题的窗口句柄
15   LPTSTR lpString,  // 获取标题后存放的变量
16   int nMaxCount     // 获取的长度
17 );
18 #define g_ClassNme "D3D Window"    //窗口类名
19 TCHAR titleText[MAX_PATH]={0};    //存放标题数组
20 
21 HWND nHwnd = ::FindWindow(g_ClassNme,NULL);    //查找窗口
22 while(nHwnd!=NULL)        //循环遍历
23 {
24     ::GetWindowText(nHwnd,titleText,MAX_PATH);    //获取标题
25     if(_tcslen(titleText)>0)MessageBox(titleText);    //判断长度输出标题
26     
27     nHwnd = ::FindWindowEx(0,nHwnd,g_ClassNme,NULL);    //继续查找下一个
28 }

 

原文地址:https://www.cnblogs.com/callback/p/4245286.html