Reactos
at master 116 lines 4.3 kB view raw
1/* 2 * PROJECT: ReactOS CTF 3 * LICENSE: LGPL-2.0-or-later (https://spdx.org/licenses/LGPL-2.0-or-later) 4 * PURPOSE: Precompiled header for msctf.dll 5 * COPYRIGHT: Copyright 2008 Aric Stewart, CodeWeavers 6 * Copyright 2025 Katayama Hirofumi MZ <katayama.hirofumi.mz@gmail.com> 7 */ 8 9#pragma once 10 11#include <initguid.h> 12#include <windef.h> 13#include <winbase.h> 14#include <oleauto.h> 15#include <olectl.h> 16#include <cguid.h> 17#include <msctf.h> 18#include <msctf_undoc.h> 19#include <tchar.h> 20#include <strsafe.h> 21#include <wine/list.h> 22 23// Cicero 24#include <cicbase.h> 25#include <cicarray.h> 26#include <cicreg.h> 27#include <cicutb.h> 28 29#ifdef __cplusplus 30extern "C" { 31#endif 32 33#define COOKIE_MAGIC_TMSINK 0x0010 34#define COOKIE_MAGIC_CONTEXTSINK 0x0020 35#define COOKIE_MAGIC_GUIDATOM 0x0030 36#define COOKIE_MAGIC_IPPSINK 0x0040 37#define COOKIE_MAGIC_EDITCOOKIE 0x0050 38#define COOKIE_MAGIC_COMPARTMENTSINK 0x0060 39#define COOKIE_MAGIC_DMSINK 0x0070 40#define COOKIE_MAGIC_THREADFOCUSSINK 0x0080 41#define COOKIE_MAGIC_KEYTRACESINK 0x0090 42#define COOKIE_MAGIC_UIELEMENTSINK 0x00a0 43#define COOKIE_MAGIC_INPUTPROCESSORPROFILEACTIVATIONSINK 0x00b0 44#define COOKIE_MAGIC_ACTIVELANGSINK 0x00c0 45 46extern DWORD g_dwTLSIndex; 47extern TfClientId g_processId; 48extern ITfCompartmentMgr *g_globalCompartmentMgr; 49 50HRESULT ThreadMgr_Constructor(IUnknown *pUnkOuter, IUnknown **ppOut); 51HRESULT DocumentMgr_Constructor(ITfThreadMgrEventSink*, ITfDocumentMgr **ppOut); 52HRESULT Context_Constructor(TfClientId tidOwner, IUnknown *punk, ITfDocumentMgr *mgr, ITfContext **ppOut, TfEditCookie *pecTextStore); 53HRESULT InputProcessorProfiles_Constructor(IUnknown *pUnkOuter, IUnknown **ppOut); 54HRESULT CategoryMgr_Constructor(IUnknown *pUnkOuter, IUnknown **ppOut); 55HRESULT Range_Constructor(ITfContext *context, DWORD anchorStart, DWORD anchorEnd, ITfRange **ppOut); 56HRESULT CompartmentMgr_Constructor(IUnknown *pUnkOuter, REFIID riid, IUnknown **ppOut); 57HRESULT CompartmentMgr_Destructor(ITfCompartmentMgr *This); 58HRESULT LangBarMgr_Constructor(IUnknown *pUnkOuter, IUnknown **ppOut); 59HRESULT DisplayAttributeMgr_Constructor(IUnknown *pUnkOuter, IUnknown **ppOut); 60 61HRESULT Context_Initialize(ITfContext *cxt, ITfDocumentMgr *manager); 62HRESULT Context_Uninitialize(ITfContext *cxt); 63void ThreadMgr_OnDocumentMgrDestruction(ITfThreadMgr *tm, ITfDocumentMgr *mgr); 64HRESULT TF_SELECTION_to_TS_SELECTION_ACP(const TF_SELECTION *tf, TS_SELECTION_ACP *tsAcp); 65 66/* cookie function */ 67DWORD generate_Cookie(DWORD magic, LPVOID data); 68DWORD get_Cookie_magic(DWORD id); 69LPVOID get_Cookie_data(DWORD id); 70LPVOID remove_Cookie(DWORD id); 71DWORD enumerate_Cookie(DWORD magic, DWORD *index); 72 73/* activated text services functions */ 74HRESULT add_active_textservice(TF_LANGUAGEPROFILE *lp); 75BOOL get_active_textservice(REFCLSID rclsid, TF_LANGUAGEPROFILE *lp); 76HRESULT activate_textservices(ITfThreadMgrEx *tm); 77HRESULT deactivate_textservices(void); 78 79CLSID get_textservice_clsid(TfClientId tid); 80HRESULT get_textservice_sink(TfClientId tid, REFCLSID iid, IUnknown** sink); 81HRESULT set_textservice_sink(TfClientId tid, REFCLSID iid, IUnknown* sink); 82 83typedef struct { 84 struct list entry; 85 union { 86 IUnknown *pIUnknown; 87 ITfThreadMgrEventSink *pITfThreadMgrEventSink; 88 ITfCompartmentEventSink *pITfCompartmentEventSink; 89 ITfTextEditSink *pITfTextEditSink; 90 ITfLanguageProfileNotifySink *pITfLanguageProfileNotifySink; 91 ITfTransitoryExtensionSink *pITfTransitoryExtensionSink; 92 } interfaces; 93} Sink; 94 95#define SINK_ENTRY(cursor,type) (LIST_ENTRY(cursor,Sink,entry)->interfaces.p##type) 96#define SINK_FOR_EACH(cursor,list,type,elem) \ 97 for ((cursor) = (list)->next, elem = SINK_ENTRY(cursor,type); \ 98 (cursor) != (list); \ 99 (cursor) = (cursor)->next, elem = SINK_ENTRY(cursor,type)) 100 101HRESULT advise_sink(struct list *sink_list, REFIID riid, DWORD cookie_magic, IUnknown *unk, DWORD *cookie); 102HRESULT unadvise_sink(DWORD cookie); 103void free_sinks(struct list *sink_list); 104 105#define szwSystemTIPKey L"SOFTWARE\\Microsoft\\CTF\\TIP" 106#define szwSystemCTFKey L"SOFTWARE\\Microsoft\\CTF" 107 108HRESULT __wine_register_resources(HMODULE module); 109HRESULT __wine_unregister_resources(HMODULE module); 110 111BOOL ProcessAttach(HINSTANCE hinstDLL); 112VOID ProcessDetach(HINSTANCE hinstDLL); 113 114#ifdef __cplusplus 115} // extern "C" 116#endif