1/* 2 * Copyright 2010 Justin Chevrier 3 * 4 * This library is free software; you can redistribute it and/or 5 * modify it under the terms of the GNU Lesser General Public 6 * License as published by the Free Software Foundation; either 7 * version 2.1 of the License, or (at your option) any later version. 8 * 9 * This library is distributed in the hope that it will be useful, 10 * but WITHOUT ANY WARRANTY; without even the implied warranty of 11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 12 * Lesser General Public License for more details. 13 * 14 * You should have received a copy of the GNU Lesser General Public 15 * License along with this library; if not, write to the Free Software 16 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA 17 */ 18 19#ifndef DO_NO_IMPORTS 20import "oaidl.idl"; 21#endif 22 23interface ITfLangBarEventSink; 24interface ITfLangBarItemMgr; 25interface ITfInputProcessorProfiles; 26 27const ULONG TF_LBI_DESC_MAXLEN = 32; 28 29typedef [uuid(12a1d29f-a065-440c-9746-eb2002c8bd19)] struct TF_LANGBARITEMINFO 30{ 31 CLSID clsidService; 32 GUID guidItem; 33 DWORD dwStyle; 34 ULONG ulSort; 35 WCHAR szDescription[TF_LBI_DESC_MAXLEN]; 36} TF_LANGBARITEMINFO; 37 38[ 39 object, 40 uuid(73540d69-edeb-4ee9-96c9-23aa30b25916), 41 pointer_default(unique), 42] 43interface ITfLangBarItem : IUnknown 44{ 45 HRESULT GetInfo( 46 [out] TF_LANGBARITEMINFO *pInfo); 47 48 HRESULT GetStatus( 49 [out] DWORD *pdwStatus); 50 51 HRESULT Show( 52 [in] BOOL fShow); 53 54 HRESULT GetTooltipString( 55 [out] BSTR *pbstrToolTip); 56} 57 58[ 59 object, 60 uuid(583f34d0-de25-11d2-afdd-00105a2799b5), 61 pointer_default(unique), 62] 63interface IEnumTfLangBarItems : IUnknown 64{ 65 HRESULT Clone( 66 [out] IEnumTfLangBarItems **ppEnum); 67 68 HRESULT Next( 69 [in] ULONG ulCount, 70 [out, size_is(ulCount)] ITfLangBarItem **ppItem, 71 [in, out, unique] ULONG *pcFetched); 72 73 HRESULT Reset(); 74 75 HRESULT Skip( 76 [in] ULONG ulCount); 77} 78 79[ 80 object, 81 uuid(57dbe1a0-de25-11d2-afdd-00105a2799b5), 82 pointer_default(unique), 83] 84interface ITfLangBarItemSink : IUnknown 85{ 86 HRESULT OnUpdate( 87 [in] DWORD dwFlags); 88} 89 90[ 91 object, 92 uuid(ba468c55-9956-4fb1-a59d-52a7dd7cc6aa), 93 pointer_default(unique), 94] 95interface ITfLangBarItemMgr : IUnknown 96{ 97 HRESULT EnumItems( 98 [out] IEnumTfLangBarItems **ppEnum); 99 100 HRESULT GetItem( 101 [in] REFGUID rguid, 102 [out] ITfLangBarItem **ppItem); 103 104 HRESULT AddItem( 105 [in] ITfLangBarItem *punk); 106 107 HRESULT RemoveItem( 108 [in] ITfLangBarItem *punk); 109 110 HRESULT AdviseItemSink( 111 [in] ITfLangBarItemSink *punk, 112 [out] DWORD *pdwCookie, 113 [in] REFGUID rguidItem); 114 115 HRESULT UnadviseItemSink( 116 [in] DWORD dwCookie); 117 118 HRESULT GetItemFloatingRect( 119 [in] DWORD dwThreadId, 120 [in] REFGUID rguid, 121 [out] RECT *prc); 122 123 HRESULT GetItemsStatus( 124 [in] ULONG ulCount, 125 [in, size_is(ulCount)] const GUID *prgguid, 126 [out, size_is(ulCount)] DWORD *pdwStatus); 127 128 HRESULT GetItemNum( 129 [out] ULONG *pulCount); 130 131 HRESULT GetItems( 132 [in] ULONG ulCount, 133 [out, size_is(ulCount), length_is(*pcFetched)] ITfLangBarItem **ppItem, 134 [out, size_is(ulCount), length_is(*pcFetched)] TF_LANGBARITEMINFO *pInfo, 135 [out, size_is(ulCount), length_is(*pcFetched)] DWORD *pdwStatus, 136 [in, out, unique] ULONG *pcFetched); 137 138 HRESULT AdviseItemsSink( 139 [in] ULONG ulCount, 140 [in, size_is(ulCount)] ITfLangBarItemSink **ppunk, 141 [in, size_is(ulCount)] const GUID *pguidItem, 142 [out, size_is(ulCount)] DWORD *pdwCookie); 143 144 HRESULT UnadviseItemsSink( 145 [in] ULONG ulCount, 146 [in, size_is(ulCount)] DWORD *pdwCookie); 147} 148 149[ 150 object, 151 uuid(87955690-e627-11d2-8ddb-00105a2799b5), 152 pointer_default(unique) 153] 154interface ITfLangBarMgr: IUnknown 155{ 156 HRESULT AdviseEventSink( 157 [in] ITfLangBarEventSink *pSink, 158 [in] HWND hwnd, 159 [in] DWORD dwflags, 160 [in] DWORD *pdwCookie); 161 162 HRESULT UnAdviseEventSink( 163 [in] DWORD dwCookie); 164 165 HRESULT GetThreadMarshalInterface( 166 [in] DWORD dwThreadId, 167 [in] DWORD dwType, 168 [in] REFIID riid, 169 [out] IUnknown **ppunk); 170 171 HRESULT GetThreadLangBarItemMgr( 172 [in] DWORD dwThreadId, 173 [out] ITfLangBarItemMgr **pplbie, 174 [out] DWORD *pdwThreadid); 175 176 HRESULT GetInputProcessorProfiles( 177 [in] DWORD dwThreadId, 178 [out] ITfInputProcessorProfiles **ppaip, 179 [out] DWORD *pdwThreadid); 180 181 HRESULT RestoreLastFocus( 182 [out] DWORD *dwThreadId, 183 [in] BOOL fPrev); 184 185 HRESULT SetModalInput( 186 [in] ITfLangBarEventSink *pSink, 187 [in] DWORD dwThreadId, 188 [in] DWORD dwFlags); 189 190 HRESULT ShowFloating( 191 [in] DWORD dwFlags); 192 193 HRESULT GetShowFloatingStatus( 194 [out] DWORD *pdwFlags); 195} 196 197[ 198 object, 199 uuid(18a4e900-e0ae-11d2-afdd-00105a2799b5), 200 pointer_default(unique) 201] 202interface ITfLangBarEventSink: IUnknown 203{ 204 HRESULT OnSetFocus( 205 [in] DWORD dwThreadId); 206 207 HRESULT OnThreadTerminate( 208 [in] DWORD dwThreadId); 209 210 HRESULT OnThreadItemChange( 211 [in] DWORD dwThreadId); 212 213 HRESULT OnModalInput( 214 [in] DWORD dwThreadId, 215 [in] UINT uMsg, 216 [in] WPARAM wParam, 217 [in] LPARAM lParam); 218 219 HRESULT ShowFloating( 220 [in] DWORD dwFlags); 221 222 HRESULT GetItemFloatingRect( 223 [in] DWORD dwThreadId, 224 [in] REFGUID rguid, 225 [out] RECT *prc); 226} 227