mirror of
https://github.com/reactos/reactos.git
synced 2025-06-12 01:48:31 +00:00
- Add language name tooltip to kbswitch systray icon
svn path=/trunk/; revision=33281
This commit is contained in:
parent
0b4fd5a09c
commit
908bc24d72
2 changed files with 25 additions and 4 deletions
|
@ -16,6 +16,9 @@ TCHAR szKbSwitcherName[] = _T("kbswitcher");
|
||||||
static BOOL
|
static BOOL
|
||||||
GetLayoutID(LPTSTR szLayoutNum, LPTSTR szLCID);
|
GetLayoutID(LPTSTR szLayoutNum, LPTSTR szLCID);
|
||||||
|
|
||||||
|
static BOOL
|
||||||
|
GetLayoutName(LPTSTR szLayoutNum, LPTSTR szName);
|
||||||
|
|
||||||
HINSTANCE hInst;
|
HINSTANCE hInst;
|
||||||
HANDLE hProcessHeap;
|
HANDLE hProcessHeap;
|
||||||
|
|
||||||
|
@ -95,16 +98,20 @@ AddTrayIcon(HWND hwnd)
|
||||||
{
|
{
|
||||||
NOTIFYICONDATA tnid;
|
NOTIFYICONDATA tnid;
|
||||||
TCHAR szLCID[CCH_LAYOUT_ID + 1];
|
TCHAR szLCID[CCH_LAYOUT_ID + 1];
|
||||||
|
TCHAR szName[MAX_PATH];
|
||||||
|
|
||||||
GetLayoutID(_T("1"), szLCID);
|
GetLayoutID(_T("1"), szLCID);
|
||||||
|
GetLayoutName(_T("1"), szName);
|
||||||
|
|
||||||
tnid.cbSize = sizeof(NOTIFYICONDATA);
|
tnid.cbSize = sizeof(NOTIFYICONDATA);
|
||||||
tnid.hWnd = hwnd;
|
tnid.hWnd = hwnd;
|
||||||
tnid.uID = 1;
|
tnid.uID = 1;
|
||||||
tnid.uFlags = NIF_ICON | NIF_MESSAGE;
|
tnid.uFlags = NIF_ICON | NIF_MESSAGE | NIF_TIP;
|
||||||
tnid.uCallbackMessage = WM_NOTIFYICONMSG;
|
tnid.uCallbackMessage = WM_NOTIFYICONMSG;
|
||||||
tnid.hIcon = CreateTrayIcon(szLCID);
|
tnid.hIcon = CreateTrayIcon(szLCID);
|
||||||
|
|
||||||
|
lstrcpyn(tnid.szTip, szName, sizeof(tnid.szTip));
|
||||||
|
|
||||||
Shell_NotifyIcon(NIM_ADD, &tnid);
|
Shell_NotifyIcon(NIM_ADD, &tnid);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -121,17 +128,19 @@ DelTrayIcon(HWND hwnd)
|
||||||
}
|
}
|
||||||
|
|
||||||
static VOID
|
static VOID
|
||||||
UpdateTrayIcon(HWND hwnd, LPTSTR szLCID)
|
UpdateTrayIcon(HWND hwnd, LPTSTR szLCID, LPTSTR szName)
|
||||||
{
|
{
|
||||||
NOTIFYICONDATA tnid;
|
NOTIFYICONDATA tnid;
|
||||||
|
|
||||||
tnid.cbSize = sizeof(NOTIFYICONDATA);
|
tnid.cbSize = sizeof(NOTIFYICONDATA);
|
||||||
tnid.hWnd = hwnd;
|
tnid.hWnd = hwnd;
|
||||||
tnid.uID = 1;
|
tnid.uID = 1;
|
||||||
tnid.uFlags = NIF_ICON | NIF_MESSAGE;
|
tnid.uFlags = NIF_ICON | NIF_MESSAGE |NIF_TIP;
|
||||||
tnid.uCallbackMessage = WM_NOTIFYICONMSG;
|
tnid.uCallbackMessage = WM_NOTIFYICONMSG;
|
||||||
tnid.hIcon = CreateTrayIcon(szLCID);
|
tnid.hIcon = CreateTrayIcon(szLCID);
|
||||||
|
|
||||||
|
lstrcpyn(tnid.szTip, szName, sizeof(tnid.szTip));
|
||||||
|
|
||||||
Shell_NotifyIcon(NIM_MODIFY, &tnid);
|
Shell_NotifyIcon(NIM_MODIFY, &tnid);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -259,13 +268,15 @@ ActivateLayout(HWND hwnd, ULONG uLayoutNum)
|
||||||
HKL hKl;
|
HKL hKl;
|
||||||
TCHAR szLayoutNum[CCH_ULONG_DEC + 1];
|
TCHAR szLayoutNum[CCH_ULONG_DEC + 1];
|
||||||
TCHAR szLCID[CCH_LAYOUT_ID + 1];
|
TCHAR szLCID[CCH_LAYOUT_ID + 1];
|
||||||
|
TCHAR szName[MAX_PATH];
|
||||||
|
|
||||||
_ultot(uLayoutNum, szLayoutNum, 10);
|
_ultot(uLayoutNum, szLayoutNum, 10);
|
||||||
GetLayoutID(szLayoutNum, szLCID);
|
GetLayoutID(szLayoutNum, szLCID);
|
||||||
|
GetLayoutName(szLayoutNum, szName);
|
||||||
CreateTrayIcon(szLCID);
|
CreateTrayIcon(szLCID);
|
||||||
|
|
||||||
// Switch to the new keyboard layout
|
// Switch to the new keyboard layout
|
||||||
UpdateTrayIcon(hwnd, szLCID);
|
UpdateTrayIcon(hwnd, szLCID, szName);
|
||||||
hKl = LoadKeyboardLayout(szLCID, KLF_ACTIVATE);
|
hKl = LoadKeyboardLayout(szLCID, KLF_ACTIVATE);
|
||||||
SystemParametersInfo(SPI_SETDEFAULTINPUTLANG, 0, &hKl, SPIF_SENDWININICHANGE);
|
SystemParametersInfo(SPI_SETDEFAULTINPUTLANG, 0, &hKl, SPIF_SENDWININICHANGE);
|
||||||
EnumWindows(EnumWindowsProc, (LPARAM) hKl);
|
EnumWindows(EnumWindowsProc, (LPARAM) hKl);
|
||||||
|
@ -411,6 +422,15 @@ WndProc(HWND hwnd, UINT Message, WPARAM wParam, LPARAM lParam)
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case WM_SETTINGCHANGE:
|
||||||
|
{
|
||||||
|
if (wParam == SPI_SETDEFAULTINPUTLANG)
|
||||||
|
{
|
||||||
|
//FIXME: Should detect default language changes by CPL applet or by other tools and update UI
|
||||||
|
}
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
case WM_DESTROY:
|
case WM_DESTROY:
|
||||||
DestroyMenu(hLeftPopupMenu);
|
DestroyMenu(hLeftPopupMenu);
|
||||||
DestroyMenu(hRightPopupMenu);
|
DestroyMenu(hRightPopupMenu);
|
||||||
|
|
|
@ -1,6 +1,7 @@
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
#include <windows.h>
|
#include <windows.h>
|
||||||
|
#include <winuser.h>
|
||||||
#include <tchar.h>
|
#include <tchar.h>
|
||||||
|
|
||||||
#include "resource.h"
|
#include "resource.h"
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue