ReactOS Fundraising Campaign 2012
 
€ 4,410 / € 30,000

Information | Donate

Home | Info | Community | Development | myReactOS | Contact Us

  1. Home
  2. Community
  3. Development
  4. myReactOS
  5. Fundraiser 2012

  1. Main Page
  2. Alphabetical List
  3. Data Structures
  4. Directories
  5. File List
  6. Data Fields
  7. Globals
  8. Related Pages

ReactOS Development > Doxygen

langbarmgr.c
Go to the documentation of this file.
00001 /*
00002  *  ITfLangBarMgr implementation
00003  *
00004  *  Copyright 2010 Justin Chevrier
00005  *
00006  * This library is free software; you can redistribute it and/or
00007  * modify it under the terms of the GNU Lesser General Public
00008  * License as published by the Free Software Foundation; either
00009  * version 2.1 of the License, or (at your option) any later version.
00010  *
00011  * This library is distributed in the hope that it will be useful,
00012  * but WITHOUT ANY WARRANTY; without even the implied warranty of
00013  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
00014  * Lesser General Public License for more details.
00015  *
00016  * You should have received a copy of the GNU Lesser General Public
00017  * License along with this library; if not, write to the Free Software
00018  * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
00019  */
00020 
00021 #define COBJMACROS
00022 
00023 #include "wine/debug.h"
00024 #include "winbase.h"
00025 #include "winreg.h"
00026 #include "shlwapi.h"
00027 
00028 #include "msctf.h"
00029 #include "msctf_internal.h"
00030 
00031 WINE_DEFAULT_DEBUG_CHANNEL(msctf);
00032 
00033 typedef struct tagLangBarMgr {
00034     ITfLangBarMgr ITfLangBarMgr_iface;
00035 
00036     LONG refCount;
00037 
00038 } LangBarMgr;
00039 
00040 static inline LangBarMgr *impl_from_ITfLangBarMgr(ITfLangBarMgr *iface)
00041 {
00042     return CONTAINING_RECORD(iface, LangBarMgr, ITfLangBarMgr_iface);
00043 }
00044 
00045 static void LangBarMgr_Destructor(LangBarMgr *This)
00046 {
00047     TRACE("destroying %p\n", This);
00048 
00049     HeapFree(GetProcessHeap(),0,This);
00050 }
00051 
00052 static HRESULT WINAPI LangBarMgr_QueryInterface(ITfLangBarMgr *iface, REFIID iid, LPVOID *ppvOut)
00053 {
00054     LangBarMgr *This = impl_from_ITfLangBarMgr(iface);
00055     *ppvOut = NULL;
00056 
00057     if (IsEqualIID(iid, &IID_IUnknown) || IsEqualIID(iid, &IID_ITfLangBarMgr))
00058     {
00059         *ppvOut = This;
00060     }
00061 
00062     if (*ppvOut)
00063     {
00064         IUnknown_AddRef(iface);
00065         return S_OK;
00066     }
00067 
00068     WARN("unsupported interface: %s\n", debugstr_guid(iid));
00069     return E_NOINTERFACE;
00070 }
00071 
00072 static ULONG WINAPI LangBarMgr_AddRef(ITfLangBarMgr *iface)
00073 {
00074     LangBarMgr *This = impl_from_ITfLangBarMgr(iface);
00075     return InterlockedIncrement(&This->refCount);
00076 }
00077 
00078 static ULONG WINAPI LangBarMgr_Release(ITfLangBarMgr *iface)
00079 {
00080     LangBarMgr *This = impl_from_ITfLangBarMgr(iface);
00081     ULONG ret;
00082 
00083     ret = InterlockedDecrement(&This->refCount);
00084     if (ret == 0)
00085         LangBarMgr_Destructor(This);
00086     return ret;
00087 }
00088 
00089 /*****************************************************
00090  * ITfLangBarMgr functions
00091  *****************************************************/
00092 
00093 static HRESULT WINAPI LangBarMgr_AdviseEventSink( ITfLangBarMgr* iface, ITfLangBarEventSink *pSink, HWND hwnd, DWORD dwflags, DWORD *pdwCookie)
00094 {
00095     LangBarMgr *This = impl_from_ITfLangBarMgr(iface);
00096 
00097     FIXME("STUB:(%p)\n",This);
00098     return E_NOTIMPL;
00099 }
00100 
00101 static HRESULT WINAPI LangBarMgr_UnAdviseEventSink( ITfLangBarMgr* iface, DWORD dwCookie)
00102 {
00103     LangBarMgr *This = impl_from_ITfLangBarMgr(iface);
00104 
00105     FIXME("STUB:(%p)\n",This);
00106     return E_NOTIMPL;
00107 }
00108 
00109 static HRESULT WINAPI LangBarMgr_GetThreadMarshalInterface( ITfLangBarMgr* iface, DWORD dwThreadId, DWORD dwType, REFIID riid, IUnknown **ppunk)
00110 {
00111     LangBarMgr *This = impl_from_ITfLangBarMgr(iface);
00112 
00113     FIXME("STUB:(%p)\n",This);
00114     return E_NOTIMPL;
00115 }
00116 
00117 static HRESULT WINAPI LangBarMgr_GetThreadLangBarItemMgr( ITfLangBarMgr* iface, DWORD dwThreadId, ITfLangBarItemMgr **pplbi, DWORD *pdwThreadid)
00118 {
00119     LangBarMgr *This = impl_from_ITfLangBarMgr(iface);
00120 
00121     FIXME("STUB:(%p)\n",This);
00122     return E_NOTIMPL;
00123 }
00124 
00125 static HRESULT WINAPI LangBarMgr_GetInputProcessorProfiles( ITfLangBarMgr* iface, DWORD dwThreadId, ITfInputProcessorProfiles **ppaip, DWORD *pdwThreadid)
00126 {
00127     LangBarMgr *This = impl_from_ITfLangBarMgr(iface);
00128 
00129     FIXME("STUB:(%p)\n",This);
00130     return E_NOTIMPL;
00131 }
00132 
00133 static HRESULT WINAPI LangBarMgr_RestoreLastFocus( ITfLangBarMgr* iface, DWORD *dwThreadId, BOOL fPrev)
00134 {
00135     LangBarMgr *This = impl_from_ITfLangBarMgr(iface);
00136 
00137     FIXME("STUB:(%p)\n",This);
00138     return E_NOTIMPL;
00139 }
00140 
00141 static HRESULT WINAPI LangBarMgr_SetModalInput( ITfLangBarMgr* iface, ITfLangBarEventSink *pSink, DWORD dwThreadId, DWORD dwFlags)
00142 {
00143     LangBarMgr *This = impl_from_ITfLangBarMgr(iface);
00144 
00145     FIXME("STUB:(%p)\n",This);
00146     return E_NOTIMPL;
00147 }
00148 
00149 static HRESULT WINAPI LangBarMgr_ShowFloating( ITfLangBarMgr* iface, DWORD dwFlags)
00150 {
00151     LangBarMgr *This = impl_from_ITfLangBarMgr(iface);
00152 
00153     FIXME("STUB:(%p)\n",This);
00154     return E_NOTIMPL;
00155 }
00156 
00157 static HRESULT WINAPI LangBarMgr_GetShowFloatingStatus( ITfLangBarMgr* iface, DWORD *pdwFlags)
00158 {
00159     LangBarMgr *This = impl_from_ITfLangBarMgr(iface);
00160 
00161     FIXME("STUB:(%p)\n",This);
00162     return E_NOTIMPL;
00163 }
00164 
00165 static const ITfLangBarMgrVtbl LangBarMgr_LangBarMgrVtbl =
00166 {
00167     LangBarMgr_QueryInterface,
00168     LangBarMgr_AddRef,
00169     LangBarMgr_Release,
00170 
00171     LangBarMgr_AdviseEventSink,
00172     LangBarMgr_UnAdviseEventSink,
00173     LangBarMgr_GetThreadMarshalInterface,
00174     LangBarMgr_GetThreadLangBarItemMgr,
00175     LangBarMgr_GetInputProcessorProfiles,
00176     LangBarMgr_RestoreLastFocus,
00177     LangBarMgr_SetModalInput,
00178     LangBarMgr_ShowFloating,
00179     LangBarMgr_GetShowFloatingStatus
00180 };
00181 
00182 HRESULT LangBarMgr_Constructor(IUnknown *pUnkOuter, IUnknown **ppOut)
00183 {
00184     LangBarMgr *This;
00185     if (pUnkOuter)
00186         return CLASS_E_NOAGGREGATION;
00187 
00188     This = HeapAlloc(GetProcessHeap(),0,sizeof(LangBarMgr));
00189     if (This == NULL)
00190         return E_OUTOFMEMORY;
00191 
00192     This->ITfLangBarMgr_iface.lpVtbl = &LangBarMgr_LangBarMgrVtbl;
00193     This->refCount = 1;
00194 
00195     TRACE("returning %p\n", This);
00196     *ppOut = (IUnknown *)This;
00197     return S_OK;
00198 }

Generated on Fri May 25 2012 04:22:58 for ReactOS by doxygen 1.7.6.1

ReactOS is a registered trademark or a trademark of ReactOS Foundation in the United States and other countries.