| Left: | ||
| Right: | 
| OLD | NEW | 
|---|---|
| 1 #include "PluginStdAfx.h" | 1 #include "PluginStdAfx.h" | 
| 2 | 2 | 
| 3 #include "PluginClass.h" | 3 #include "PluginClass.h" | 
| 4 #include "PluginDictionary.h" | |
| 5 #include "PluginSettings.h" | 4 #include "PluginSettings.h" | 
| 6 #include "PluginSystem.h" | 5 #include "PluginSystem.h" | 
| 7 #ifdef SUPPORT_FILTER | 6 #ifdef SUPPORT_FILTER | 
| 8 #include "PluginFilter.h" | 7 #include "PluginFilter.h" | 
| 9 #endif | 8 #endif | 
| 10 #include "PluginMimeFilterClient.h" | 9 #include "PluginMimeFilterClient.h" | 
| 11 #include "PluginClient.h" | 10 #include "PluginClient.h" | 
| 12 #include "PluginClientFactory.h" | 11 #include "PluginClientFactory.h" | 
| 13 #include "PluginHttpRequest.h" | 12 #include "PluginHttpRequest.h" | 
| 14 #include "PluginMutex.h" | 13 #include "PluginMutex.h" | 
| 15 #include "DownloadSource.h" | 14 #include "DownloadSource.h" | 
| 16 #include "sddl.h" | 15 #include "sddl.h" | 
| 17 #include "PluginUtil.h" | 16 #include "PluginUtil.h" | 
| 18 #include "PluginUserSettings.h" | 17 #include "PluginUserSettings.h" | 
| 19 | 18 | 
| 19 #include "../shared/Dictionary.h" | |
| 20 | |
| 20 #ifdef DEBUG_HIDE_EL | 21 #ifdef DEBUG_HIDE_EL | 
| 21 DWORD profileTime = 0; | 22 DWORD profileTime = 0; | 
| 22 #endif | 23 #endif | 
| 23 | 24 | 
| 24 typedef HANDLE (WINAPI *OPENTHEMEDATA)(HWND, LPCWSTR); | 25 typedef HANDLE (WINAPI *OPENTHEMEDATA)(HWND, LPCWSTR); | 
| 25 typedef HRESULT (WINAPI *DRAWTHEMEBACKGROUND)(HANDLE, HDC, INT, INT, LPRECT, LPR ECT); | 26 typedef HRESULT (WINAPI *DRAWTHEMEBACKGROUND)(HANDLE, HDC, INT, INT, LPRECT, LPR ECT); | 
| 26 typedef HRESULT (WINAPI *CLOSETHEMEDATA)(HANDLE); | 27 typedef HRESULT (WINAPI *CLOSETHEMEDATA)(HANDLE); | 
| 27 | 28 | 
| 28 | 29 | 
| 29 HICON CPluginClass::s_hIcons[ICON_MAX] = { NULL, NULL, NULL }; | 30 HICON CPluginClass::s_hIcons[ICON_MAX] = { NULL, NULL, NULL }; | 
| (...skipping 519 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 549 HRESULT hr = S_OK; | 550 HRESULT hr = S_OK; | 
| 550 hr = browser->get_StatusBar(&isVisible); | 551 hr = browser->get_StatusBar(&isVisible); | 
| 551 if (SUCCEEDED(hr)) | 552 if (SUCCEEDED(hr)) | 
| 552 { | 553 { | 
| 553 if (!isVisible) | 554 if (!isVisible) | 
| 554 { | 555 { | 
| 555 if (!settings->GetBool("statusbarasked", false)) | 556 if (!settings->GetBool("statusbarasked", false)) | 
| 556 { | 557 { | 
| 557 SHANDLE_PTR pBrowserHWnd; | 558 SHANDLE_PTR pBrowserHWnd; | 
| 558 browser->get_HWND((SHANDLE_PTR*)&pBrowserHWnd); | 559 browser->get_HWND((SHANDLE_PTR*)&pBrowserHWnd); | 
| 559 CPluginDictionary* dictionary = CPluginDictionary::GetInstance(false); | 560 Dictionary* dictionary = Dictionary::GetInstance(); | 
| 560 settings->SetBool("statusbarasked", true); | 561 settings->SetBool("statusbarasked", true); | 
| 561 settings->Write(); | 562 settings->Write(); | 
| 562 | 563 | 
| 563 HKEY pHkey; | 564 HKEY pHkey; | 
| 564 HKEY pHkeySub; | 565 HKEY pHkeySub; | 
| 565 LSTATUS regRes = 0; | 566 LSTATUS regRes = 0; | 
| 566 regRes = RegOpenCurrentUser(KEY_WRITE, &pHkey); | 567 regRes = RegOpenCurrentUser(KEY_WRITE, &pHkey); | 
| 567 | 568 | 
| 568 // Do we have enough rights to enable a status bar? | 569 // Do we have enough rights to enable a status bar? | 
| 569 if (regRes != 0) | 570 if (regRes != 0) | 
| 570 { | 571 { | 
| 571 // We use the tab window here and in the next few calls, since the b rowser window may still not be available | 572 // We use the tab window here and in the next few calls, since the b rowser window may still not be available | 
| 572 LRESULT res = MessageBox((HWND)m_hTabWnd, dictionary->Lookup("ERROR_ CAN_NOT_ENABLE_STATUS_BAR"), | 573 LRESULT res = MessageBox((HWND)m_hTabWnd, | 
| 573 dictionary->Lookup("ERROR_CAN_NOT_ENABLE_STATUS_BAR_TITLE"), MB_OK ); | 574 dictionary->Lookup("status-bar", "error-text").c_str(), | 
| 575 dictionary->Lookup("status-bar", "error-title").c_str(), | |
| 576 MB_OK); | |
| 574 return; | 577 return; | 
| 575 } | 578 } | 
| 576 // Ask if a user wants to enable a status bar automatically | 579 // Ask if a user wants to enable a status bar automatically | 
| 577 LRESULT res = MessageBox((HWND)m_hTabWnd, dictionary->Lookup("ERROR_ST ATUS_BAR_DISABLED"), | 580 LRESULT res = MessageBox((HWND)m_hTabWnd, | 
| 578 dictionary->Lookup("ERROR_STATUS_BAR_DISABLED_TITLE"), MB_YESNO); | 581 dictionary->Lookup("status-bar", "question").c_str(), | 
| 582 dictionary->Lookup("status-bar", "title").c_str(), | |
| 583 MB_YESNO); | |
| 579 if (res == IDYES) | 584 if (res == IDYES) | 
| 580 { | 585 { | 
| 581 DWORD trueth = 1; | 586 DWORD trueth = 1; | 
| 582 regRes = RegOpenKey(pHkey, L"Software\\Microsoft\\Internet Explorer\ \MINIE", &pHkeySub); | 587 regRes = RegOpenKey(pHkey, L"Software\\Microsoft\\Internet Explorer\ \MINIE", &pHkeySub); | 
| 583 regRes = RegSetValueEx(pHkeySub, L"ShowStatusBar", 0, REG_DWORD, (BY TE*)&trueth, sizeof(DWORD)); | 588 regRes = RegSetValueEx(pHkeySub, L"ShowStatusBar", 0, REG_DWORD, (BY TE*)&trueth, sizeof(DWORD)); | 
| 584 regRes = RegCloseKey(pHkeySub); | 589 regRes = RegCloseKey(pHkeySub); | 
| 585 regRes = RegOpenKey(pHkey, L"Software\\Microsoft\\Internet Explorer\ \Main", &pHkeySub); | 590 regRes = RegOpenKey(pHkey, L"Software\\Microsoft\\Internet Explorer\ \Main", &pHkeySub); | 
| 586 regRes = RegSetValueEx(pHkeySub, L"StatusBarWeb", 0, REG_DWORD, (BYT E*)&trueth, sizeof(DWORD)); | 591 regRes = RegSetValueEx(pHkeySub, L"StatusBarWeb", 0, REG_DWORD, (BYT E*)&trueth, sizeof(DWORD)); | 
| 587 regRes = RegCloseKey(pHkeySub); | 592 regRes = RegCloseKey(pHkeySub); | 
| 588 hr = browser->put_StatusBar(TRUE); | 593 hr = browser->put_StatusBar(TRUE); | 
| (...skipping 873 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 1462 { | 1467 { | 
| 1463 DEBUG_ERROR_LOG(hr, PLUGIN_ERROR_NAVIGATION, navigationErrorId, "Navigat ion::Failed") | 1468 DEBUG_ERROR_LOG(hr, PLUGIN_ERROR_NAVIGATION, navigationErrorId, "Navigat ion::Failed") | 
| 1464 } | 1469 } | 
| 1465 } | 1470 } | 
| 1466 } | 1471 } | 
| 1467 } | 1472 } | 
| 1468 | 1473 | 
| 1469 | 1474 | 
| 1470 bool CPluginClass::SetMenuBar(HMENU hMenu, const CString& url) | 1475 bool CPluginClass::SetMenuBar(HMENU hMenu, const CString& url) | 
| 1471 { | 1476 { | 
| 1472 CString ctext; | 1477 std::wstring ctext; | 
| 1473 | 1478 | 
| 1474 s_criticalSectionLocal.Lock(); | 1479 s_criticalSectionLocal.Lock(); | 
| 1475 { | 1480 { | 
| 1476 #ifdef SUPPORT_WHITELIST | 1481 #ifdef SUPPORT_WHITELIST | 
| 1477 s_menuDomains.clear(); | 1482 s_menuDomains.clear(); | 
| 1478 #endif | 1483 #endif | 
| 1479 } | 1484 } | 
| 1480 s_criticalSectionLocal.Unlock(); | 1485 s_criticalSectionLocal.Unlock(); | 
| 1481 | 1486 | 
| 1482 CPluginTab* tab = GetTab(::GetCurrentThreadId()); | 1487 CPluginTab* tab = GetTab(::GetCurrentThreadId()); | 
| 1483 if (!tab) | 1488 if (!tab) | 
| 1484 { | 1489 { | 
| 1485 return false; | 1490 return false; | 
| 1486 } | 1491 } | 
| 1487 | 1492 | 
| 1488 CPluginDictionary* dictionary = CPluginDictionary::GetInstance(); | 1493 Dictionary* dictionary = Dictionary::GetInstance(); | 
| 1489 | 1494 | 
| 1490 MENUITEMINFO fmii; | 1495 MENUITEMINFOW fmii; | 
| 1491 memset(&fmii, 0, sizeof(MENUITEMINFO)); | 1496 memset(&fmii, 0, sizeof(MENUITEMINFO)); | 
| 1492 fmii.cbSize = sizeof(MENUITEMINFO); | 1497 fmii.cbSize = sizeof(MENUITEMINFO); | 
| 1493 | 1498 | 
| 1494 MENUITEMINFO miiSep; | 1499 MENUITEMINFOW miiSep; | 
| 1495 memset(&miiSep, 0, sizeof(MENUITEMINFO)); | 1500 memset(&miiSep, 0, sizeof(MENUITEMINFO)); | 
| 1496 miiSep.cbSize = sizeof(MENUITEMINFO); | 1501 miiSep.cbSize = sizeof(MENUITEMINFO); | 
| 1497 miiSep.fMask = MIIM_TYPE | MIIM_FTYPE; | 1502 miiSep.fMask = MIIM_TYPE | MIIM_FTYPE; | 
| 1498 miiSep.fType = MFT_SEPARATOR; | 1503 miiSep.fType = MFT_SEPARATOR; | 
| 1499 | 1504 | 
| 1500 CPluginClient* client = CPluginClient::GetInstance(); | 1505 CPluginClient* client = CPluginClient::GetInstance(); | 
| 1501 | 1506 | 
| 1502 CPluginSettings* settings = CPluginSettings::GetInstance(); | 1507 CPluginSettings* settings = CPluginSettings::GetInstance(); | 
| 1503 | 1508 | 
| 1504 settings->RefreshTab(); | 1509 settings->RefreshTab(); | 
| 1505 | 1510 | 
| 1506 // Update settings | 1511 // Update settings | 
| 1507 m_tab->OnUpdateSettings(false); | 1512 m_tab->OnUpdateSettings(false); | 
| 1508 | 1513 | 
| 1509 #ifdef SUPPORT_WHITELIST | 1514 #ifdef SUPPORT_WHITELIST | 
| 1510 { | 1515 { | 
| 1511 // White list domain | 1516 // White list domain | 
| 1512 ctext = dictionary->Lookup("MENU_DISABLE_ON"); | 1517 ctext = dictionary->Lookup("menu", "disable-on-site"); | 
| 1513 fmii.fMask = MIIM_STRING | MIIM_STATE; | 1518 fmii.fMask = MIIM_STRING | MIIM_STATE; | 
| 1514 fmii.fState = MFS_DISABLED; | 1519 fmii.fState = MFS_DISABLED; | 
| 1515 fmii.dwTypeData = ctext.GetBuffer(); | 1520 fmii.dwTypeData = const_cast<LPWSTR>(ctext.c_str()); | 
| 1516 fmii.cch = ctext.GetLength(); | 1521 fmii.cch = ctext.size(); | 
| 1517 | 1522 | 
| 1518 UINT index = WM_WHITELIST_DOMAIN; | 1523 UINT index = WM_WHITELIST_DOMAIN; | 
| 1519 | 1524 | 
| 1520 ::SetMenuItemInfo(hMenu, ID_WHITELISTDOMAIN, FALSE, &fmii); | 1525 ::SetMenuItemInfoW(hMenu, ID_WHITELISTDOMAIN, FALSE, &fmii); | 
| 1521 } | 1526 } | 
| 1522 #else | 1527 #else | 
| 1523 { | 1528 { | 
| 1524 ::DeleteMenu(hMenu, ID_WHITELISTDOMAIN, FALSE); | 1529 ::DeleteMenu(hMenu, ID_WHITELISTDOMAIN, FALSE); | 
| 1525 } | 1530 } | 
| 1526 #endif // SUPPORT_WHITELIST | 1531 #endif // SUPPORT_WHITELIST | 
| 1527 | 1532 | 
| 
 
Oleksandr
2013/06/18 07:41:09
This is a menu that has been shown when a user cli
 
Wladimir Palant
2013/06/18 08:17:48
It's quite the opposite actually - we should make
 
 | |
| 1528 // Invite friends | 1533 // Invite friends | 
| 1529 ctext = dictionary->Lookup("MENU_INVITE_FRIENDS"); | 1534 ctext = dictionary->Lookup("menu", "invite"); | 
| 1530 fmii.fMask = MIIM_STATE | MIIM_STRING; | 1535 fmii.fMask = MIIM_STATE | MIIM_STRING; | 
| 1531 fmii.fState = MFS_ENABLED; | 1536 fmii.fState = MFS_ENABLED; | 
| 1532 fmii.dwTypeData = ctext.GetBuffer(); | 1537 fmii.dwTypeData = const_cast<LPWSTR>(ctext.c_str()); | 
| 1533 fmii.cch = ctext.GetLength(); | 1538 fmii.cch = ctext.size(); | 
| 1534 ::SetMenuItemInfo(hMenu, ID_INVITEFRIENDS, FALSE, &fmii); | 1539 ::SetMenuItemInfoW(hMenu, ID_INVITEFRIENDS, FALSE, &fmii); | 
| 1535 | 1540 | 
| 1536 // FAQ | 1541 // FAQ | 
| 1537 ctext = dictionary->Lookup("MENU_FAQ"); | 1542 ctext = dictionary->Lookup("menu", "faq"); | 
| 1538 fmii.fMask = MIIM_STATE | MIIM_STRING; | 1543 fmii.fMask = MIIM_STATE | MIIM_STRING; | 
| 1539 fmii.fState = MFS_ENABLED; | 1544 fmii.fState = MFS_ENABLED; | 
| 1540 fmii.dwTypeData = ctext.GetBuffer(); | 1545 fmii.dwTypeData = const_cast<LPWSTR>(ctext.c_str()); | 
| 1541 fmii.cch = ctext.GetLength(); | 1546 fmii.cch = ctext.size(); | 
| 1542 ::SetMenuItemInfo(hMenu, ID_FAQ, FALSE, &fmii); | 1547 ::SetMenuItemInfoW(hMenu, ID_FAQ, FALSE, &fmii); | 
| 1543 | 1548 | 
| 1544 // About | 1549 // About | 
| 1545 ctext = dictionary->Lookup("MENU_ABOUT"); | 1550 ctext = dictionary->Lookup("menu", "about"); | 
| 1546 fmii.fMask = MIIM_STATE | MIIM_STRING; | 1551 fmii.fMask = MIIM_STATE | MIIM_STRING; | 
| 1547 fmii.fState = MFS_ENABLED; | 1552 fmii.fState = MFS_ENABLED; | 
| 1548 fmii.dwTypeData = ctext.GetBuffer(); | 1553 fmii.dwTypeData = const_cast<LPWSTR>(ctext.c_str()); | 
| 1549 fmii.cch = ctext.GetLength(); | 1554 fmii.cch = ctext.size(); | 
| 1550 ::SetMenuItemInfo(hMenu, ID_ABOUT, FALSE, &fmii); | 1555 ::SetMenuItemInfoW(hMenu, ID_ABOUT, FALSE, &fmii); | 
| 1551 | 1556 | 
| 1552 // Feedback | 1557 // Feedback | 
| 1553 ctext = dictionary->Lookup("MENU_FEEDBACK"); | 1558 ctext = dictionary->Lookup("menu", "feedback"); | 
| 1554 fmii.fMask = MIIM_STATE | MIIM_STRING; | 1559 fmii.fMask = MIIM_STATE | MIIM_STRING; | 
| 1555 fmii.fState = MFS_ENABLED; | 1560 fmii.fState = MFS_ENABLED; | 
| 1556 fmii.dwTypeData = ctext.GetBuffer(); | 1561 fmii.dwTypeData = const_cast<LPWSTR>(ctext.c_str()); | 
| 1557 fmii.cch = ctext.GetLength(); | 1562 fmii.cch = ctext.size(); | 
| 1558 ::SetMenuItemInfo(hMenu, ID_FEEDBACK, FALSE, &fmii); | 1563 ::SetMenuItemInfoW(hMenu, ID_FEEDBACK, FALSE, &fmii); | 
| 1559 | 1564 | 
| 1560 // Plugin enable | 1565 // Plugin enable | 
| 1561 if (settings->GetPluginEnabled()) | 1566 if (settings->GetPluginEnabled()) | 
| 1562 { | 1567 { | 
| 1563 ctext = dictionary->Lookup("MENU_DISABLE"); | 1568 ctext = dictionary->Lookup("menu", "disable"); | 
| 1564 } | 1569 } | 
| 1565 else | 1570 else | 
| 1566 { | 1571 { | 
| 1567 ctext = dictionary->Lookup("MENU_ENABLE"); | 1572 ctext = dictionary->Lookup("menu", "enable"); | 
| 1568 } | 1573 } | 
| 1569 fmii.fMask = MIIM_STATE | MIIM_STRING; | 1574 fmii.fMask = MIIM_STATE | MIIM_STRING; | 
| 1570 fmii.fState = client ? MFS_ENABLED : MFS_DISABLED; | 1575 fmii.fState = client ? MFS_ENABLED : MFS_DISABLED; | 
| 1571 fmii.dwTypeData = ctext.GetBuffer(); | 1576 fmii.dwTypeData = const_cast<LPWSTR>(ctext.c_str()); | 
| 1572 fmii.cch = ctext.GetLength(); | 1577 fmii.cch = ctext.size(); | 
| 1573 ::SetMenuItemInfo(hMenu, ID_PLUGIN_ENABLE, FALSE, &fmii); | 1578 ::SetMenuItemInfoW(hMenu, ID_PLUGIN_ENABLE, FALSE, &fmii); | 
| 1574 | 1579 | 
| 1575 // Settings | 1580 // Settings | 
| 1576 #ifndef ENTERPRISE | 1581 #ifndef ENTERPRISE | 
| 1577 ctext = dictionary->Lookup("MENU_SETTINGS"); | 1582 ctext = dictionary->Lookup("menu", "settings"); | 
| 1578 fmii.fMask = MIIM_STATE | MIIM_STRING; | 1583 fmii.fMask = MIIM_STATE | MIIM_STRING; | 
| 1579 fmii.fState = MFS_ENABLED; | 1584 fmii.fState = MFS_ENABLED; | 
| 1580 fmii.dwTypeData = ctext.GetBuffer(); | 1585 fmii.dwTypeData = const_cast<LPWSTR>(ctext.c_str()); | 
| 1581 fmii.cch = ctext.GetLength(); | 1586 fmii.cch = ctext.size(); | 
| 1582 ::SetMenuItemInfo(hMenu, ID_SETTINGS, FALSE, &fmii); | 1587 ::SetMenuItemInfoW(hMenu, ID_SETTINGS, FALSE, &fmii); | 
| 1583 #else | 1588 #else | 
| 1584 RemoveMenu(hMenu, ID_SETTINGS, MF_BYCOMMAND); | 1589 RemoveMenu(hMenu, ID_SETTINGS, MF_BYCOMMAND); | 
| 1585 RemoveMenu(hMenu, 5, MF_BYPOSITION); | 1590 RemoveMenu(hMenu, 5, MF_BYPOSITION); | 
| 1586 #endif | 1591 #endif | 
| 1587 | 1592 | 
| 1588 ctext.ReleaseBuffer(); | |
| 1589 | |
| 1590 return true; | 1593 return true; | 
| 1591 } | 1594 } | 
| 1592 | 1595 | 
| 1593 | 1596 | 
| 1594 STDMETHODIMP CPluginClass::Exec(const GUID*, DWORD nCmdID, DWORD, VARIANTARG*, V ARIANTARG*) | 1597 STDMETHODIMP CPluginClass::Exec(const GUID*, DWORD nCmdID, DWORD, VARIANTARG*, V ARIANTARG*) | 
| 1595 { | 1598 { | 
| 1596 HWND hBrowserWnd = GetBrowserHWND(); | 1599 HWND hBrowserWnd = GetBrowserHWND(); | 
| 1597 if (!hBrowserWnd) | 1600 if (!hBrowserWnd) | 
| 1598 { | 1601 { | 
| 1599 return E_FAIL; | 1602 return E_FAIL; | 
| (...skipping 364 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 1964 CComQIPtr<IWebBrowser2> browser = GetAsyncBrowser(); | 1967 CComQIPtr<IWebBrowser2> browser = GetAsyncBrowser(); | 
| 1965 if (browser) | 1968 if (browser) | 
| 1966 { | 1969 { | 
| 1967 HRESULT hr = S_OK; | 1970 HRESULT hr = S_OK; | 
| 1968 | 1971 | 
| 1969 hr = browser->get_StatusBar(&isVisible); | 1972 hr = browser->get_StatusBar(&isVisible); | 
| 1970 if (SUCCEEDED(hr)) | 1973 if (SUCCEEDED(hr)) | 
| 1971 { | 1974 { | 
| 1972 if (!isVisible) | 1975 if (!isVisible) | 
| 1973 { | 1976 { | 
| 1974 CPluginDictionary* dictionary = CPluginDictionary::GetInstance(); | 1977 Dictionary* dictionary = Dictionary::GetInstance(); | 
| 1975 | 1978 | 
| 1976 LRESULT res = MessageBox(NULL, dictionary->Lookup("ERROR_STATUS_BA R_DISABLED"), dictionary->Lookup("ERROR_STATUS_BAR_DISABLED_TITLE"), MB_YESNO); | 1979 LRESULT res = MessageBox(NULL, | 
| 1980 dictionary->Lookup("status-bar", "question").c_str(), | |
| 1981 dictionary->Lookup("status-bar", "title").c_str(), | |
| 1982 MB_YESNO); | |
| 1977 if (res == IDYES) | 1983 if (res == IDYES) | 
| 1978 { | 1984 { | 
| 1979 hr = browser->put_StatusBar(TRUE); | 1985 hr = browser->put_StatusBar(TRUE); | 
| 1980 if (FAILED(hr)) | 1986 if (FAILED(hr)) | 
| 1981 { | 1987 { | 
| 1982 DEBUG_ERROR_LOG(hr, PLUGIN_ERROR_UI, PLUGIN_ERROR_UI_PUT_STATU SBAR, "Class::Enable statusbar"); | 1988 DEBUG_ERROR_LOG(hr, PLUGIN_ERROR_UI, PLUGIN_ERROR_UI_PUT_STATU SBAR, "Class::Enable statusbar"); | 
| 1983 } | 1989 } | 
| 1984 } | 1990 } | 
| 1985 } | 1991 } | 
| 1986 } | 1992 } | 
| (...skipping 200 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 2187 } | 2193 } | 
| 2188 } | 2194 } | 
| 2189 } | 2195 } | 
| 2190 | 2196 | 
| 2191 hTabWnd = ::GetWindow(hTabWnd, GW_HWNDNEXT); | 2197 hTabWnd = ::GetWindow(hTabWnd, GW_HWNDNEXT); | 
| 2192 } | 2198 } | 
| 2193 | 2199 | 
| 2194 return hTabWnd; | 2200 return hTabWnd; | 
| 2195 | 2201 | 
| 2196 } | 2202 } | 
| OLD | NEW |