📄 tsf.cpp
字号:
pItem->Release ();
}
}
#endif
if (fShowIMEIcon) {
pItem = NULL;
if (SUCCEEDED (pLangBarItemMgr->GetItem (c_guidItemButtonIME, &pItem)) &&
pItem != NULL) {
pLangBarItemMgr->RemoveItem (pItem);
if (fShowIMEIcon)
pLangBarItemMgr->AddItem (pItem);
pItem->Release ();
}
}
pLangBarItemMgr->Release ();
}
#if 0
_ShowKeyboardIcon (fShowKeyboardIcon);
#endif
exit_func:
#if defined (TSF_NEED_MUTEX)
ReleaseMutex (hMutex);
exit_func_1:
CloseHandle (hMutex);
#endif
return fRetval;
}
/* 尵岅僶?偵傾僀僥?傪捛壛/嶍彍偡傞丅
*/
void PASCAL
ActivateLanguageBar (
register BOOL fSelect)
{
register ITfLangBarItemMgr* pLangBarItemMgr = NULL;
register ITfLangBarItem* pLangBarItem = NULL;
#if defined (TSF_NEED_MUTEX)
register HANDLE hMutex;
#endif
register DWORD dwValue;
register BOOL fShowKeyboardIcon, fShowIMEIcon, fShowInputModeIcon ,fShowShapeIcon;
TF_LANGBARITEMINFO MypInfo;
#if 0
if (gfSaenaruSecure)
return;
#endif
#if defined (TSF_NEED_MUTEX)
hMutex = saenaruCreateMutex (SKKIME_MUTEX_NAME);
if (!hMutex)
return;
dwValue = WaitForSingleObject (hMutex, TSF_WAITTIME);
if (dwValue == WAIT_FAILED || dwValue == WAIT_TIMEOUT) {
goto Exit_Func_1;
}
#endif
if (shMSCTF == NULL)
goto Exit_Func;
DEBUGPRINTFEX (100, (TEXT ("ActivateLanguageBar (Select:%d)\n"), fSelect));
/* 枅夞儗僕僗僩儕傪嶲徠偡傞偺偼惓偟偄偺偩傠偆偐丠 */
fShowKeyboardIcon = fShowIMEIcon = fShowInputModeIcon = fShowShapeIcon = TRUE;
if (fSelect) {
#if 0
#if !defined (NO_TOUCH_REGISTRY)
if (GetRegDwordValue (TEXT ("\\CICERO"), TEXT(REGKEY_SHOWKEYBRDICON), &dwValue))
fShowKeyboardIcon = (BOOL) dwValue;
if (GetRegDwordValue (TEXT ("\\CICERO"), TEXT(REGKEY_SHOWIMEICON), &dwValue))
fShowIMEIcon = (BOOL) dwValue;
if (GetRegDwordValue (TEXT ("\\CICERO"), TEXT(REGKEY_SHOWINPUTMODEICON), &dwValue))
fShowInputModeIcon = (BOOL) dwValue;
#endif
#endif
}
pLangBarItemMgr = _QueryLangBarItemMgr ();
if (pLangBarItemMgr != NULL) {
ITfLangBarItem* pItem;
ITfLangBarItem* pNewItem;
BOOL fRemove;
pItem = NULL;
fRemove = FALSE;
#if 1
if (SUCCEEDED (pLangBarItemMgr->GetItem (c_guidItemButtonCMode, &pItem)) &&
pItem != NULL) {
fRemove = SUCCEEDED (pLangBarItemMgr->RemoveItem (pItem));
pItem->Release ();
}
if ((pItem == NULL || fRemove) && fSelect && fShowInputModeIcon) {
pNewItem = NULL;
if (CreateItemButtonCMode (&pNewItem) && pNewItem != NULL) {
pLangBarItemMgr->AddItem (pNewItem);
pNewItem->Release ();
}
}
pItem = NULL;
fRemove = FALSE;
#endif
#if 1
if (SUCCEEDED (pLangBarItemMgr->GetItem (c_guidItemButtonShape, &pItem)) &&
pItem != NULL) {
fRemove = SUCCEEDED (pLangBarItemMgr->RemoveItem (pItem));
pItem->Release ();
}
if ((pItem == NULL || fRemove) && fSelect && fShowShapeIcon) {
pNewItem = NULL;
if (CreateItemButtonShape (&pNewItem) && pNewItem != NULL) {
pLangBarItemMgr->AddItem (pNewItem);
pNewItem->Release ();
}
}
pItem = NULL;
fRemove = FALSE;
#endif
#if 1
if (SUCCEEDED (pLangBarItemMgr->GetItem (c_guidItemButtonIME, &pItem)) &&
pItem != NULL) {
fRemove = SUCCEEDED (pLangBarItemMgr->RemoveItem (pItem));
pItem->Release ();
}
if ((pItem == NULL || fRemove) && fSelect && fShowIMEIcon) {
pNewItem = NULL;
if (CreateItemButtonIME (&pNewItem) && pNewItem != NULL) {
pLangBarItemMgr->AddItem (pNewItem);
pNewItem->Release ();
}
}
#endif
pLangBarItemMgr->Release ();
}
#if 0
if (fSelect)
_ShowKeyboardIcon (fShowKeyboardIcon);
#endif
Exit_Func:
#if defined (TSF_NEED_MUTEX)
ReleaseMutex (hMutex);
Exit_Func_1:
CloseHandle (hMutex);
#endif
return;
}
void PASCAL
UninitLanguageBar (void)
{
register ITfLangBarItemMgr* pLangBarItemMgr = NULL;
register int i;
#if 0
if (gfSaenaruSecure) {
return;
}
#endif
if (shMSCTF != NULL) {
FreeLibrary (shMSCTF);
shMSCTF = NULL;
}
g_fInitTSF = FALSE;
return;
}
ITfThreadMgr*
_QueryThreadMgr (void)
{
PTF_CREATETHREADMGR pfnCreateThreadMgr = NULL;
ITfThreadMgr* pThreadMgr = NULL;
HRESULT hr;
if (shMSCTF == NULL)
return NULL;
pfnCreateThreadMgr = (PTF_CREATETHREADMGR)GetProcAddress (shMSCTF, "TF_CreateThreadMgr");
if(pfnCreateThreadMgr) {
hr = (*pfnCreateThreadMgr)(&pThreadMgr);
if (SUCCEEDED (hr) && pThreadMgr != NULL)
return pThreadMgr;
}
return NULL;
}
ITfLangBarItemMgr*
_QueryLangBarItemMgr (void)
{
PTF_CREATELANGBARITEMMGR pfnCreateLangBarItemMgr = NULL;
ITfLangBarItemMgr* pLangBarItemMgr = NULL;
HRESULT hr;
if (shMSCTF == NULL)
return NULL;
pfnCreateLangBarItemMgr = (PTF_CREATELANGBARITEMMGR)GetProcAddress (shMSCTF, "TF_CreateLangBarItemMgr");
if (pfnCreateLangBarItemMgr == NULL)
return NULL;
hr = (*pfnCreateLangBarItemMgr)(&pLangBarItemMgr);
if (SUCCEEDED (hr))
return pLangBarItemMgr;
return NULL;
}
HIMC
_GetCurrentHIMC (void)
{
register HIMC hIMC = NULL;
register HWND hwnd = GetFocus ();
if (hwnd != NULL)
hIMC = ImmGetContext (hwnd);
return hIMC;
}
/* 僉???僪傾僀僐儞(尵岅僶?偺)偺?帵/旕?帵傪愗傝懼偊傞娭悢丅
*仸
* Text Service Framework 偲摑崌偝傟偰偄傞応崌偵偼僉???僪偺傾僀僐儞偑
* ?帵偝傟傞偑丄偦偆偱側偄応崌偵偼 IME ICON 偑棙梡偝傟傞傛偆偱偁傞丅
*/
BOOL
_ShowKeyboardIcon (
register BOOL fShow)
{
register ITfLangBarItemMgr* pLangBarItemMgr = NULL;
ITfLangBarItem* pItem;
pLangBarItemMgr = _QueryLangBarItemMgr ();
if (pLangBarItemMgr == NULL)
return FALSE;
if (SUCCEEDED (pLangBarItemMgr->GetItem (c_guidKeyboardItemButton, &pItem))) {
if (fShow) {
ITfSystemLangBarItem* pSysItem;
ITfSystemDeviceTypeLangBarItem* pSysDevItem;
if (SUCCEEDED (pItem->QueryInterface (IID_ITfSystemDeviceTypeLangBarItem, (void**)&pSysDevItem)) && pSysDevItem != NULL) {
pSysDevItem->SetIconMode (0);
pSysDevItem->Release ();
}
/* Text Service Framework 偲 IME 偑摑崌偝傟偰偄側偄応崌偵偼丄
* IME Icon 偑?帵偝傟偰偟傑偄丄偦傟偑 Button 偺1偮偲廳側傞
* 偨傔偵丄僉???僪傾僀僐儞傪曄峏偡傞丅
*/
#if defined (not_integrate_tsf) || 0
if (SUCCEEDED (pItem->QueryInterface (IID_ITfSystemLangBarItem, (void**)&pSysItem)) && pSysItem != NULL) {
register HICON hIcon;
hIcon = (HICON) LoadImage (hInst, TEXT ("INDICOPENICON"), IMAGE_ICON, 16, 16, 0);
if (hIcon != NULL) {
pSysItem->SetIcon (hIcon);
}
pSysItem->Release ();
}
#endif
}
pItem->Show (fShow);
pItem->Release ();
}
pLangBarItemMgr->Release ();
return TRUE;
}
#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -