Leaked source code of windows server 2003
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

164 lines
6.1 KiB

//
// imelist.h
//
#ifndef TFELIST_H
#define TFELIST_H
#include "globals.h"
#include "enumguid.h"
#include "sink.h"
HRESULT GetProfileIconInfo(REFCLSID rclsid,
LANGID langid,
REFGUID guidProfile,
WCHAR *pszFileName,
int cchFileNameMax,
ULONG *puIconIndex);
HRESULT EnableLanguageProfileForReg(REFCLSID rclsid, LANGID langid, REFGUID guidProfile, BOOL fEnable);
BOOL IsEnabledLanguageProfileFromReg(REFCLSID rclsid, LANGID langid, REFGUID guidProfile);
//////////////////////////////////////////////////////////////////////////////
//
// CInputProcessorProfiles
//
//////////////////////////////////////////////////////////////////////////////
class CInputProcessorProfiles : public ITfInputProcessorProfilesEx,
public ITfInputProcessorProfileSubstituteLayout,
public ITfSource,
public CComObjectRoot_CreateSingletonInstance<CInputProcessorProfiles>
{
public:
CInputProcessorProfiles();
~CInputProcessorProfiles();
BEGIN_COM_MAP_IMMX(CInputProcessorProfiles)
COM_INTERFACE_ENTRY(ITfInputProcessorProfiles)
COM_INTERFACE_ENTRY(ITfInputProcessorProfilesEx)
COM_INTERFACE_ENTRY(ITfInputProcessorProfileSubstituteLayout)
COM_INTERFACE_ENTRY(ITfSource)
END_COM_MAP_IMMX()
// ITfInputProcessorProfiles
STDMETHODIMP Register(REFCLSID clsid);
STDMETHODIMP Unregister(REFCLSID clsid);
STDMETHODIMP AddLanguageProfile(REFCLSID rclsid,
LANGID langid,
REFGUID guidProfile,
const WCHAR *pchProfile,
ULONG cch,
const WCHAR *pchFile,
ULONG cchFile,
ULONG uIconIndex);
STDMETHODIMP RemoveLanguageProfile(REFCLSID rclsid,
LANGID langid,
REFGUID guidProfile);
STDMETHODIMP EnumInputProcessorInfo(IEnumGUID **ppEnum);
STDMETHODIMP GetDefaultLanguageProfile(LANGID langid,
REFGUID catid,
CLSID *pclsid,
GUID *pguidProfile);
STDMETHODIMP SetDefaultLanguageProfile(LANGID langid,
REFCLSID rclsid,
REFGUID guidProfile);
STDMETHODIMP ActivateLanguageProfile(REFCLSID rclsid,
LANGID langid,
REFGUID guidProfile);
STDMETHODIMP GetActiveLanguageProfile(REFCLSID clsid,
LANGID *plangid,
GUID *pguidProfile);
STDMETHODIMP GetLanguageProfileDescription(REFCLSID clsid,
LANGID langid,
REFGUID guidProfile,
BSTR *pbstr);
STDMETHODIMP GetCurrentLanguage(LANGID *plangid);
STDMETHODIMP ChangeCurrentLanguage(LANGID langid);
STDMETHODIMP GetLanguageList(LANGID **pplangid, ULONG *pulCount);
STDMETHODIMP EnumLanguageProfiles(LANGID langid,
IEnumTfLanguageProfiles **ppEnum);
STDMETHODIMP EnableLanguageProfile(REFCLSID rclsid,
LANGID langid,
REFGUID guidProfile,
BOOL fEnable);
STDMETHODIMP IsEnabledLanguageProfile(REFCLSID rclsid,
LANGID langid,
REFGUID guidProfile,
BOOL *pfEnable);
STDMETHODIMP EnableLanguageProfileByDefault(REFCLSID rclsid,
LANGID langid,
REFGUID guidProfile,
BOOL fEnable);
STDMETHODIMP SubstituteKeyboardLayout(REFCLSID rclsid,
LANGID langid,
REFGUID guidProfile,
HKL hKL);
// ITfInputProcessorProfiles
STDMETHODIMP SetLanguageProfileDisplayName(REFCLSID rclsid,
LANGID langid,
REFGUID guidProfile,
const WCHAR *pchFile,
ULONG cchFile,
ULONG uResId);
// ITfInputProcessorProfileSubstituteLayout
STDMETHODIMP GetSubstituteKeyboardLayout(REFCLSID rclsid,
LANGID langid,
REFGUID guidProfile,
HKL *phKL);
// ITfSource
STDMETHODIMP AdviseSink(REFIID riid, IUnknown *punk, DWORD *puCookie);
STDMETHODIMP UnadviseSink(DWORD dwCookie);
BOOL _OnLanguageChange(BOOL fChanged, LANGID langid);
static CInputProcessorProfiles *_GetThis()
{
SYSTHREAD *psfn = GetSYSTHREAD();
if (!psfn)
return NULL;
return psfn->pipp;
}
static BOOL _SetThis(CInputProcessorProfiles *_this)
{
SYSTHREAD *psfn = GetSYSTHREAD();
if (!psfn)
return FALSE;
Assert(psfn->pipp == NULL || _this == NULL);
psfn->pipp = _this;
return TRUE;
}
private:
CStructArray<GENERICSINK> _rgNotifySinks; // ITfLanguageProfilesNotifySink
BOOL _GetTIPRegister(CLSID **prgclsid, ULONG *pulCount);
DBG_ID_DECLARE;
};
#endif // TFELIST_H