最近项目有需要,得到一个非自己实现的窗口控件对象。于是想起曾经做过类似功能。总结如下:

调用EnumChildWindows(this->m_hWnd, EnumChildProc, NULL);遍历指定窗口的所有子窗口。这里就是遍历This->m_hWnd的所有子窗口。this从外部窗口继承,外部窗口上的控件就是我们需要查找的对象。

实现BOOL CALLBACK EnumChildProc(HWND hwndChild, LPARAM lParam) 的窗口遍历回调函数,其中hwndChild为你指定的父窗口的各个子窗口。返回True或False,可以控制这个子窗口过程是否被继续调用,具体看MSDN,我代码返回是True,应该表示继续查找,不断调用回调函数。

在EnumChildProc实现中可以用

HWND EditNumHwnd = ::FindWindowEx(hwndChild,NULL,_T("Edit"),NULL);

去查找某个Combobox控件的子Edit控件。然后用

SendMessage(EditNumHwnd, WM_SETTEXT, (WPARAM)0, (LPARAM)(filterString.kACharPtr()));

去设置字符串。

用CWnd* pComBox = CWnd::FromHandle(hwndChild);
    CComboBox
*pCCombox = (CComboBox *)pComBox;得到对应的Combobox类指针。

接着就能调用AddString,DeleteString,SetCurSel这些函数了。

]用EnumChildWindows遍历窗口的方法的更多相关文章

  1. 根据获取的窗口句柄遍历窗口Edit控件

    网上说遍历窗口控件有两种方法: 1),使用EnumChildWindows,没有深究,     学习网址如下:http://blog.sina.com.cn/s/blog_60ac1c4b010116 ...

  2. 遍历datatable的方法汇总

    遍历datatable的方法方法一: DataTable dt = dataSet.Tables[]; ; i < dt.Rows.Count ; i++) { string strName = ...

  3. Mapcontrol 遍历所有图层方法

    mapcontrol 遍历所有图层方法 2011-04-29 19:51 通过IMap中的get_layers()可以遍历MapControl中当前的图层.此方法可以通过指定UID对图层进行过滤或者分 ...

  4. 在Linux下和Windows下遍历目录的方法及如何达成一致性操作

    最近因为测试目的需要遍历一个目录下面的所有文件进行操作,主要是读每个文件的内容,只要知道文件名就OK了.在Java中直接用File类就可以搞定,因为Java中使用了组合模式,使得客户端对单个文件和文件 ...

  5. vc++6.0各种报错合集(附:VC++6.0调出打印窗口的方法)

    背景: 由于VC++6.0对于现在的我来说,只是一个工具,暂时没有太多的时间分配到这块去深究它,由于不明其原理,因此也只是在此把错误积累下来,以备下次相同错误出现时能快速排除,节省时间. 正文 一.出 ...

  6. jquery中each遍历各种标签方法

    这写天用到的遍历jquery each方法比较频繁 刚好有时间,就在这里记录一下 jquery用的是bootstrap的线上文件 不需要导入 <!DOCTYPE html><html ...

  7. jquery $.each遍历json数组方法

    <!doctype html public "-//w3c//dtd xhtml 1.0 transitional//en" "http://www.w3.org/ ...

  8. window.showModalDialog刷新父窗口和本窗口的方法及注意

    window.showModalDialog刷新父窗口和本窗口的方法及注意:   一.刷新父窗口的方法:    A.使用window.returnValue给父窗口传值,然后根据值判断是否刷新. 在w ...

  9. php中遍历数组的方法

    参考网址:http://www.jb51.net/article/29949.htm 这三种方法中效率最高的是使用foreach语句遍历数组.从PHP4开始就引入了foreach结构,是PHP中专门为 ...

随机推荐

  1. 【JavaScript学习笔记】鼠标样式

    style="cursor:hand"   手形 style="cursor:crosshair"   十字形       style="cursor ...

  2. CentOS 安装BitTorrent Sync详细步骤

    官网:https://www.getsync.com 这个软件安装完后通过网页浏览器设置共享目录并生成同步Secret,异地的客户端可以通过这个同步Secret访问共的目录,其中有读写和只读两种同步方 ...

  3. 扩容盘、SD卡扩容

    内存卡的前世今生回想当年,大家都还在用着非智能机,由于功能单一,需要存储的数据也就是通讯录和短信.虽然那时也有手机游戏,但大多都是几十KB,并不需要太大的存储空间.但随着手机功能的多样化,尤其是音乐. ...

  4. Markdown解决需要输入两个回车才能为一个空行的问题

    markdownDataDiv.children().each(function(){ $(this).html($(this).html().replaceAll("\n",&q ...

  5. 25个有用的jQuery日历和日期选取插件

    jQuery被认为是最好的JavaScript库,因为它简单易用.灵活,并有大量的插件.本文介绍25个非常不错的jQuery日历和日期选取插件,希望对各位有用. 1. Simple JQuery Da ...

  6. Bootstrap学习之路(2)---导航组件

    在bootstrap中,导航条的样式都依赖于.nav类,而样式又分为多种,如: 标签页的样式为:.nav-tabs <ul class="nav nav-tabs"> ...

  7. synchronized作用范围及用法

    1.多线程的同步: 1.1.同步机制: 在多线程中,可能有多个线程试图访问一个有限的资源,必须预防这种情况的发生.所以引入了同步机制:在线程使用一个资源时为其加锁,这样其他的线程便不能访问那个资源了, ...

  8. YII 快速创建项目GII

    Yii 是一个基于组件.纯OOP的.用于开发大型 Web 应用的高性能PHP框架. 它将Web编程中的可重用性发挥到极致,能够显著加速开发进程 .Yii适合大流量的应用,如门户.BBS.CMS及B2B ...

  9. Drupal处理缓存的方式

    Drupal的后台数据库中有很多以cache开头的表,这些都是Drupal的缓存数据表. Drupal的缓存机制使用了接口方式,所有的缓存对象都必须实现DrupalCacheInterface接口: ...

  10. eclipse 在Navigator视图中查看资源

    随着不断使用Eclipse,Navigator视图中的实体数目会增加.通过在某一项目或文件夹上右击,并在所出现的快捷菜单中选择Go Into命令,你就可以查看该项目或文件夹中的资源了.此时Naviga ...