我正在尝试修改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;
}