]用EnumChildWindows遍历窗口的方法

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

调用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这些函数了。

上一篇:32+激发灵感的HTML5/CSS3网页设计教程


下一篇:纯CSS3彩色边线3D立体按钮制作教程