Не удалось найти дочернее окно с помощью FindWindowExA () - PullRequest
1 голос
/ 14 марта 2011

Попытка получить дескриптор кнопки в форме окна калькулятора.Spy ++ показывает следующее дерево:

("Калькулятор"; CalcFrame) ->

(""; CalcFrame) ->

(""; # 32770 Dialog),... другие дочерние окна ->

(""; кнопка), ... другие дочерние окна

// ("заголовок окна"; класс окна) // -> следующий дочерний уровень

Я ловлю главное окно и углубляюсь, используя FindWindowExA ();

#define wndName "Calculator"
...
    HWND calcHwnd = ::FindWindowA(0, wndName);
    HWND frameHwnd = ::FindWindowExA(calcHwnd, 0, 0, 0);
    HWND contentHwnd = ::FindWindowExA(calcHwnd, 0, "#32770 (Dialog)", 0);
    DWORD er = GetLastError();

Я могу использовать :: FindWindowExA (calcHwnd, 0, 0, 0) несколькораз, чтобы получить HWND мне нужно (на этом уровне есть несколько дочерних окон).но я хочу получить HWND, используя условие, что окно, которое мне нужно, имеет класс "# 32770 (Dialog)".But :: FindWindowExA (calcHwnd, 0, "# 32770 (Dialog)", 0) - возвращает NULL.GetLastError возвращает 0. Что не так?

1 Ответ

2 голосов
/ 14 марта 2011

#32770 на самом деле атом класса. Попробуйте:

HWND contentHwnd = ::FindWindowExA(calcHwnd, NULL, MAKEINTRESOURCE(32770), NULL);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...