Exemplo n.º 1
0
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"");
}
Exemplo n.º 3
0
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;
	}
}