首页 > 代码库 > Lambda 表达式递归用法实例
Lambda 表达式递归用法实例
注意: 使用Lambda表达式会增加额外开销,但却有时候又蛮方便的。
Windows下查找子孙窗口实例:
HWND FindDescendantWindows(HWND hWndParent, LPCTSTR lpClassName, LPCTSTR lpWindowName) { HWND hFind = nullptr; UINT nCompare = 0; nCompare += (lpClassName != nullptr) ? 1 : 0; nCompare += (lpWindowName != nullptr) ? 1 : 0; if (nCompare == 0) return nullptr; TCHAR szClass[MAX_CLASS_NAME]; TCHAR szTitle[MAX_PATH]; std::function< HWND(HWND hWndParent, LPCTSTR lpClassName, LPCTSTR lpWindowName)> _FindDescendantWindows; _FindDescendantWindows = [&](HWND hWndParent, LPCTSTR lpClassName, LPCTSTR lpWindowName)->HWND { HWND hChild = ::GetWindow(hWndParent, GW_CHILD); while (hChild != NULL) { UINT cmp = 0; ::GetClassName(hChild, szClass, MAX_CLASS_NAME); if (_tcsicmp(szClass, lpClassName) == 0) cmp++; if (cmp == nCompare) return hChild; ::GetWindowText(hChild, szTitle, MAX_PATH); if (_tcsicmp(szTitle, lpWindowName) == 0) cmp++; if (cmp == nCompare) return hChild; HWND hFind = _FindDescendantWindows(hChild, lpClassName, lpWindowName); if (hFind != nullptr) return hFind; hChild = ::GetWindow(hChild, GW_HWNDNEXT); } return nullptr; }; return _FindDescendantWindows(hWndParent, lpClassName, lpWindowName); }
Lambda 表达式递归用法实例
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。