Найти встроенное окно (по SetParent) во всех открытых окнах и получить его WindowInfo - PullRequest
0 голосов
/ 11 декабря 2011

Я пытаюсь изменить исходный код средства просмотра PDF SumatraPDF для прямого поиска из текстового редактора, который использует связь DDE. Каждый раз, когда пользователь выполняет поиск вперед, функция будет вызывать следующую функцию, которая используется для определения, открыт ли соответствующий файл PDF. Наконец, он передаст переменную win типа WindowInfo* в функцию ShowForwardSearchResult. С другой стороны, я хочу использовать функцию SetParent для встраивания SumatraPDF (после компиляции и вызова SetParent в другом проекте) в GUI, и в этом случае FindWindowInfoByFile не может найти открытое окно PDF, которое встроен в графический интерфейс.

Полагаю, есть функция, аналогичная gWindows.Count() и gWindows.At, которая может искать все элементы управления всех открытых окон, но я не знаю, какой из них может это сделать. Кроме того, даже если есть похожие функции, их тип возвращаемого значения по-прежнему WindowInfo*? Мне это нужно, так как, наконец, мне нужно использовать ShowForwardSearchResult.

WindowInfo* FindWindowInfoByFile(const TCHAR *file)
{
    ScopedMem<TCHAR> normFile(path::Normalize(file));

    for (size_t i = 0; i < gWindows.Count(); i++) {
        WindowInfo *win = gWindows.At(i);
        if (!win->IsAboutWindow() && path::IsSame(win->loadedFilePath, normFile))
            return win;
    }

    return NULL;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...