⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 tsf.cpp

📁 手机上的韩文输入法 saenaru20031212.zip
💻 CPP
📖 第 1 页 / 共 2 页
字号:
                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 + -