在所有打开的窗口中找到一个嵌入的窗口(通过SetParent)并获取其WindowInfo

时间:2011-12-10 21:48:25

标签: c++ winapi visual-c++

我正在尝试修改pdf查看器SumatraPDF的源代码,以便从使用DDE通信的tex编辑器进行前向搜索。每次用户进行前向搜索时,该函数将调用以下函数,该函数用于查找相应的pdf是否打开。最后,它会将类型为win的变量WindowInfo*传递给函数ShowForwardSearchResult。另一方面,我想使用SetParent函数将SumatraPDF(在编译并在另一个项目中调用SetParent之后)嵌入到GUI中,在这种情况下,FindWindowInfoByFile不能找到嵌入GUI的打开的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;
}

0 个答案:

没有答案