void ShowFlippedSystemMenu(UINT uID) { UINT nWti; for (nWti = 0; nWti < g_cWti; nWti++) if (g_pWti[nWti].uID == uID) break; if (nWti >= g_cWti) return; if (IsWindow(g_pWti[nWti].hwnd)) { POINT pt; GetCursorPos(&pt); WCHAR szBuff[MAX_LANGLEN]; HMENU hmenu = CreatePopupMenu(); for (int i = 0; i <= (IDM_EMCLOSE - IDM_EMRESTOREALL); i++) { LangLoadString(IDS_EMRESTOREALL + i, szBuff, SIZEOF_ARRAY(szBuff)); AppendMenu(hmenu, MF_STRING, IDM_EMRESTOREALL + i, szBuff); } WCHAR szCaption[MAX_LANGLEN + 32] = L""; LangLoadString(IDS_EMCAPTION, szBuff, SIZEOF_ARRAY(szBuff)); wsprintf(szCaption, szBuff, g_cWti); szCaption[MAX_LANGLEN + 31] = L'\0'; InsertMenu(hmenu, IDM_EMRESTOREALL, MF_STRING | MF_BYCOMMAND, IDM_EMCAPTION, szCaption); SetMenuDefaultItem(hmenu, IDM_EMCAPTION, MF_BYCOMMAND); EnableMenuItem(hmenu, IDM_EMCAPTION, MF_BYCOMMAND | MF_DISABLED | MF_GRAYED); InsertMenu(hmenu, IDM_EMRESTOREALL, MF_SEPARATOR | MF_BYCOMMAND, 0, NULL); InsertMenu(hmenu, IDM_EMRESTORE, MF_SEPARATOR | MF_BYCOMMAND, 0, NULL); SetMenuDefaultItem(hmenu, IDM_EMRESTORE, MF_BYCOMMAND); SetForegroundWindow(g_hwndMain); UINT uMenuID = TrackPopupMenu(hmenu, TPM_RIGHTALIGN | TPM_RIGHTBUTTON | TPM_NONOTIFY | TPM_RETURNCMD, pt.x, pt.y, 0, g_hwndMain, NULL); PostMessage(g_hwndMain, WM_NULL, 0, 0); DestroyMenu(hmenu); if (uMenuID >= IDM_EMRESTORE && uMenuID <= IDM_EMCLOSE) { _UnflipFromTray(nWti, (uMenuID == IDM_EMRESTORE) ? SC_RESTORE : ((uMenuID == IDM_EMCLOSE) ? SC_CLOSE : 0)); } else if (uMenuID >= IDM_EMRESTOREALL && uMenuID <= IDM_EMCLOSEALL) { UINT uCmd = (uMenuID == IDM_EMRESTOREALL) ? SC_RESTORE : ((uMenuID == IDM_EMCLOSEALL) ? SC_CLOSE : 0); for (int i = (int)g_cWti - 1; i >= 0; i--) _UnflipFromTray((UINT)i, uCmd); } } else _UnflipFromTray(nWti); }
IAIMPString* AIMPCoreWrapper::LangGetValue(PWCHAR keyPath, int partIndex) { IAIMPString* value; if (SUCCEEDED(LangLoadString(keyPath, partIndex, &value))) { return value; } return MakeString(L""); }
void ShowTrayMenu() { POINT pt; GetCursorPos(&pt); WCHAR szBuff[MAX_LANGLEN]; HMENU hmenu = CreatePopupMenu(); for (int i = 0; i <= (IDM_EXIT - IDM_STTRAYNEXT); i++) { LangLoadString(IDS_STTRAYNEXT + i, szBuff, SIZEOF_ARRAY(szBuff)); AppendMenu(hmenu, MF_STRING, IDM_STTRAYNEXT + i, szBuff); } InsertMenu(hmenu, IDM_CONFIG, MF_SEPARATOR | MF_BYCOMMAND, 0, NULL); InsertMenu(hmenu, IDM_EXIT, MF_SEPARATOR | MF_BYCOMMAND, 0, NULL); HMENU hmenuPopup = CreatePopupMenu(); for (int i = 0; i <= (IDM_ABOUT - IDM_DOCUMENTATION); i++) { LangLoadString(IDS_DOCUMENTATION + i, szBuff, SIZEOF_ARRAY(szBuff)); AppendMenu(hmenuPopup, MF_STRING, IDM_DOCUMENTATION + i, szBuff); } LangLoadString(IDS_HELP, szBuff, SIZEOF_ARRAY(szBuff)); InsertMenu(hmenu, IDM_CONFIG, MF_STRING | MF_BYCOMMAND | MF_POPUP, (UINT_PTR)hmenuPopup, szBuff); InsertMenu(hmenu, 4, MF_SEPARATOR | MF_BYPOSITION, 0, NULL); hmenuPopup = CreatePopupMenu(); for (int i = 0; i <= (IDM_NEWEXCLUSION - IDM_HIDE); i++) { LangLoadString(IDS_HIDE + i, szBuff, SIZEOF_ARRAY(szBuff)); AppendMenu(hmenuPopup, MF_STRING, IDM_HIDE + i, szBuff); } InsertMenu(hmenuPopup, IDM_NEWEXCLUSION, MF_SEPARATOR | MF_BYCOMMAND, 0, NULL); InsertMenu(hmenuPopup, IDM_REPLACEALTTAB, MF_SEPARATOR | MF_BYCOMMAND, 0, NULL); CheckMenuItem(hmenuPopup, IDM_REPLACEALTTAB, !(g_dwFlags & TSF_NOREPLACEALTTAB) ? (MF_BYCOMMAND | MF_CHECKED) : (MF_BYCOMMAND | MF_UNCHECKED)); CheckMenuItem(hmenuPopup, IDM_INSTSWITCHER, (g_dwFlags & TSF_INSTSWITCHER) ? (MF_BYCOMMAND | MF_CHECKED) : (MF_BYCOMMAND | MF_UNCHECKED)); CheckMenuItem(hmenuPopup, IDM_STICKYALTTAB, (g_dwFlags & TSF_STICKYALTTAB) ? (MF_BYCOMMAND | MF_CHECKED) : (MF_BYCOMMAND | MF_UNCHECKED)); CheckMenuItem(hmenuPopup, IDM_HOOKALTTAB, (g_dwFlags & TSF_HOOKALTTAB) ? (MF_BYCOMMAND | MF_CHECKED) : (MF_BYCOMMAND | MF_UNCHECKED)); // CheckMenuItem(hmenuPopup, IDM_EXTMOUSE, (g_dwFlags & TSF_EXTMOUSE) // ? (MF_BYCOMMAND | MF_CHECKED) : (MF_BYCOMMAND | MF_UNCHECKED)); LangLoadString(IDS_QUICKCONFIG, szBuff, SIZEOF_ARRAY(szBuff)); InsertMenu(hmenu, IDM_CONFIG, MF_STRING | MF_BYCOMMAND | MF_POPUP, (UINT_PTR)hmenuPopup, szBuff); SetForegroundWindow(g_hwndMain); UINT uMenuID = (UINT)TrackPopupMenu(hmenu, TPM_RIGHTBUTTON | TPM_RIGHTALIGN | TPM_NONOTIFY | TPM_RETURNCMD, pt.x, pt.y, 0, g_hwndMain, NULL); PostMessage(g_hwndMain, WM_NULL, 0, 0); DestroyMenu(hmenu); switch (uMenuID) { case IDM_STTRAYNEXT: ShowTaskSwitchWnd(IDH_STTRAYNEXT); break; case IDM_STITRAYNEXT: ShowTaskSwitchWnd(IDH_STITRAYNEXT); break; case IDM_CONFIG: ConfigTaskSwitchXP(); break; case IDM_HIDE: ShowTrayIcon(FALSE); break; case IDM_REPLACEALTTAB: ReplaceAltTab((g_dwFlags & TSF_NOREPLACEALTTAB) ? (g_dwFlags & ~TSF_NOREPLACEALTTAB) : (g_dwFlags | TSF_NOREPLACEALTTAB)); break; case IDM_INSTSWITCHER: ReplaceAltTab((g_dwFlags & TSF_INSTSWITCHER) ? (g_dwFlags & ~TSF_INSTSWITCHER) : (g_dwFlags | TSF_INSTSWITCHER)); break; case IDM_STICKYALTTAB: g_dwFlags ^= TSF_STICKYALTTAB; break; case IDM_HOOKALTTAB: ReplaceAltTab((g_dwFlags & TSF_HOOKALTTAB) ? (g_dwFlags & ~TSF_HOOKALTTAB) : (g_dwFlags | TSF_HOOKALTTAB)); break; // case IDM_EXTMOUSE: // EnableExtMouse(!(g_dwFlags & TSF_EXTMOUSE), g_dwFlags & TSF_WHEELTAB); // break; case IDM_NEWEXCLUSION: ConfigTaskSwitchXP(L"/newexcl"); break; case IDM_DOCUMENTATION: HelpTaskSwitchXP(); break; case IDM_HOMEPAGE: ShellExecute(NULL, L"open", L"http://www.ntwind.com/taskswitchxp/", NULL, NULL, SW_SHOWNORMAL); break; case IDM_ABOUT: ConfigTaskSwitchXP(L"/about"); break; case IDM_EXIT: DestroyWindow(g_hwndMain); break; } }