extern "C" void DeactivateTextServices() { if (g_pConsoleTSF) { g_pConsoleTSF->Uninitialize(); SafeReleaseClear(g_pConsoleTSF); } }
STDAPI CMarkTextService::OnCompositionTerminated(TfEditCookie ecWrite, ITfComposition *pComposition) { // we already have the composition cached, so we can ignore pComposition... // all this service wants to do is clear the display property _ClearCompositionDisplayAttributes(ecWrite); // releae our cached composition SafeReleaseClear(_pComposition); return S_OK; }
STDAPI CMarkTextService::Deactivate() { _UninitThreadMgrSink(); _UninitLanguageBar(); _UninitCleanupContextDurationSink(); _UninitGlobalCompartment(); _UninitWorkerWnd(); _UninitKeystrokeSink(); _InitTextEditSink(NULL); // we MUST release all refs to _pThreadMgr in Deactivate SafeReleaseClear(_pThreadMgr); _tfClientId = TF_CLIENTID_NULL; return S_OK; }
extern "C" BOOL ActivateTextServices(HWND hwndConsole, GetSuggestionWindowPos pfnPosition) { if (!g_pConsoleTSF && hwndConsole) { g_pConsoleTSF = new(std::nothrow) CConsoleTSF(hwndConsole, pfnPosition); if (g_pConsoleTSF && SUCCEEDED(g_pConsoleTSF->Initialize())) { // Conhost calls this function only when the console window has focus. g_pConsoleTSF->SetFocus(TRUE); } else { SafeReleaseClear(g_pConsoleTSF); } } return g_pConsoleTSF ? TRUE : FALSE; }