void ActivateContentTopic(HWND hWnd, LPCWSTR filename, ContentItem *item) { if (lstrcmpiW(item->local, filename) == 0) { SendMessageW(hWnd, TVM_SELECTITEM, TVGN_CARET, (LPARAM) item->id); return; } if (item->next) ActivateContentTopic(hWnd, filename, item->next); if (item->child) ActivateContentTopic(hWnd, filename, item->child); }
static void DoSync(HHInfo *info) { WCHAR buf[INTERNET_MAX_URL_LENGTH]; HRESULT hres; DWORD len; BSTR url; hres = IWebBrowser2_get_LocationURL(info->web_browser, &url); if (FAILED(hres)) { WARN("get_LocationURL failed: %08x\n", hres); return; } /* If we're not currently viewing a page in the active .chm file, abort */ if ((!AppendFullPathURL(info->pszFile, buf, NULL)) || (len = lstrlenW(buf) > lstrlenW(url))) { SysFreeString(url); return; } if (lstrcmpiW(buf, url) > 0) { static const WCHAR delimW[] = {':',':','/',0}; const WCHAR *index; index = strstrW(url, delimW); if (index) ActivateContentTopic(info->tabs[TAB_CONTENTS].hwnd, index + 3, info->content); /* skip over ::/ */ } SysFreeString(url); }