//遍历一个窗口下的所有子窗口
BOOL CALLBACK EnumChildProc(HWND hwnd, LPARAM lParam)
{
LPWSTR lpString = (LPWSTR)malloc(1024 * sizeof(WCHAR));
LPWSTR ClassString = (LPWSTR)malloc(1024 * sizeof(WCHAR));
GetWindowText(hwnd, lpString, 1024);
GetClassName(hwnd, ClassString, 1024);
if (wcscmp(ClassString, _T("Edit"))==0) {
Ghwnd[i] = hwnd;
i++;
}
//wprintf(L"%s\n", lpString);
return true;
}
void main()
{
HWND hWnd= ::FindWindow(_T("TWINCONTROL"), _T("穿越火线"));
EnumChildWindows(hWnd, EnumChildProc, NULL);
}
/*
* 回调函数, 保存窗口标题信息
*/
BOOL CALLBACK EnumWindowsProc(HWND hwnd, LPARAM lParam) // 回调函数
{
TCHAR szTitle[200];
TCHAR szClass[200];
GetWindowText(hwnd, szTitle, sizeof(szTitle) / sizeof(TCHAR)); // 获取窗口名称
GetClassName(hwnd, szClass, sizeof(szClass) / sizeof(TCHAR)); // 窗口类
if (szTitle[0] != '\0' && IsWindowVisible(hwnd)) { // 判断窗口标题不为空,并且窗口可见
strList.push_back(szTitle); // 添加到临时list中
}
return TRUE;
}
/**
* 查找窗口
*/
void main()
{
strList.clear();
m_list.ResetContent();
EnumWindows(EnumWindowsProc, 0); // 枚举窗口
/* 将list中的值付给m_list控件展示 */
LISTSTR::iterator i;
for (i = strList.begin(); i != strList.end(); i++){
m_list.AddString(*i);
}
}