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 }
时间: 2024-10-09 22:34:00

MFC 记录- 遍历窗口的相关文章

mfc分个窗口,设置分割条不可移动

最近要做一个项目,做界面时遇到了这个问题,找了好多资料,终于解决了,在此记录一下,希望对有需要的人有所帮助.好了,不多说了,具体的处理如下: 新建一个类CFixSplitterWnd继承CSplitterWnd,添加 ON_WM_LBUTTONDOWN() ON_WM_SETCURSOR() ON_WM_MOUSEMOVE() 三个消息的响应,主要代码如下: 头文件 1 protected: 2 afx_msg void OnLButtonDown(UINT nFlags, CPoint pt)

MFC获得主窗口和父窗口指针

MFC编程中常常遇到子窗口向父窗口传递参数的情况,这就需要获得父窗口的指针. 例:主对话框CMyMainDlg通过按钮ButtonA进入对话框CMyParentDlg,CMyParentDlg在通过按钮ButtonB进入对话框CMyChildDlg.现在需要在CMyChildDlg分别访问CMyParentDlg和CMyMainDlg的内容,需要在CMyChildDlg中加入以下两条语句: CMyMainDlg    *pMMD = (CMyMainDlg*)AfxGetMainWnd();  

Delphi 查找标题已知的窗口句柄,遍历窗口控件句柄(转)

Delphi 查找标题已知的窗口句柄,遍历窗口控件句柄(转) 用我的方法来控制其他程序窗体上的窗口控件,必须先了解什么是 回调函数.我的理解是这样的: 回 调函数写出来不是自己的程序去调用的,反而是让其他的东西去调用,比如windows操作系统,比如其他的程序等等之类的.但是什么时候被调用却不知道 了.回调函数一般是按照调用者的要求定义好参数和返回值的类型,你向调用者提供你的回调函数的入口地址,然后调用者有什么事件发生的时候就可以随时按照你 提供的地址调用这个函数通知你,并按照预先规定好的形式传

MFC学习之窗口基础

WinMain函数 1.句柄(HANDLE):{ 1. 定义:资源的标识 2. 句柄的作用: 操作系统通过句柄来找到对应的资源,从而对这些资源进行管理和操作. 3句柄的分类:(按资源){ 1.图标句柄(HICON) , 2.光标句柄(HCURSOR) , 3. 窗口句柄(HWND) , 4.应用程序实列句柄(HINSTANCE). } } 2.Windows应用程序,操作系统,计算机硬件之间的相互关系 Windows程序的入口函数: 窗口应用程序入口: Int WINAPI WinMain( H

MFC获取各个窗口(体)之间的指针(对象)

MFC在很多的对话框操作中,我们经常要用到在一个对话框中调用另一个对话框的函数或变量.可以用如下方法来解决. HWND hWnd=::FindWindow(NULL,_T("Sphere"));      //得到对话框的句柄 C***Dialog* pWnd= (C***Dialog*)C***Dialog::FromHandle(hWnd); //由句柄得到对话框的对象指针 pWnd->xxx( );   //调用C***Dialog中的函数xxx(); 以上参考:http:

MFC中关闭窗口的几种办法+MFC中MessageBox的用法

MFC中关闭窗口的几种办法: 退出程序用AfxGetMainWnd()->SendMessage(WM_CLOSE); 关闭当前窗口用DestroyWindow( ); 关闭模式对话框用EndDialog(0); MFC中MessageBox的用法 消息框是个很常用的控件,属性比较多,本文列出了它的一些常用方法,及指出了它的一些应用场合.1.MessageBox("这是一个最简单的消息框!");2.MessageBox("这是一个有标题的消息框!","

delphi 遍历窗口

function EnumWindowsProc(hwnd: HWND; lparam: LPARAM): Boolean; stdcall; var buf: array[Byte] of Char; begin Result:= True; GetWindowText(hwnd, buf, SizeOf(buf)); Form1.Memo1.Lines.Add(buf); Form1.Memo1.Lines.Add(IntToStr(hwnd)); end; procedure TForm1

sqlserver 脚本 多条记录遍历

临时表方式实现多条记录遍历 declare @oper_cart_item_id bigint; declare @oper_cart_id bigint; declare @the_last_changed_date datetime; declare @oper_cust_id int; select * , 0 as flag into #shoppingcart_temp from deleted; while exists (select top 1 1 from #shoppingc

[转]隐藏基于对话框的MFC应用程序窗口的方法

隐藏基于对话框的MFC应用程序窗口的方法 (推荐这个方法,非常好用) 很多人可能会将窗口创建出来,然后用一个 ShowWindow(SW_HIDE) 的方法去隐藏窗口,当然这是可以做到隐藏的功能,但是有一点不足的地方就是窗口在隐藏之前会有一下短瞬的闪烁,而以下这种方法可以解决这种问题: 在 C***App::InitInstance() 的函数中将以下的这一段注释掉: C***Dlg dlg; m_pMainWnd = &dlg; int nResponse = dlg.DoModal(); i