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
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
|