GetFirstChild в win32?

Я использую EnumChildWindows, чтобы получить все дочерние окна из главного окна HWND, но я хотел бы получить только первый дочерний элемент данного окна HWND.

BOOL CALLBACK EnumChildProc ( HWND hwndChild, LPARAM lParam)
{
  // logic to call only once 
}

Это правильно? или любой другой простой способ?

~ UK

3 ответа

Решение
BOOL CALLBACK EnumChildProc ( HWND hwndChild, LPARAM lParam)
{
  // process first child window
  return FALSE;
}

С другой стороны, HWND top_child = GetWindow(thisWindow, GW_CHILD);

Конечно:

BOOL CALLBACK EnumChildProc ( HWND hwndChild, LPARAM lParam)
{
    /* do what you want with the first HWND */

    return FALSE; // stops enumeration.
}

См. MSDN для полной информации, но соответствующая строка такова:

Возвращаемое значение

BOOL

Чтобы продолжить перечисление, функция обратного вызова должна вернуть TRUE; чтобы остановить перечисление, он должен вернуть FALSE.

GetWindow(..., GW_CHILD) даст вам окно в верхней части z-порядка, которое, как я полагаю, является тем, что вы ищете

Другие вопросы по тегам