44static const WCHAR szwLngp[] = {
'L',
'a',
'n',
'g',
'u',
'a',
'g',
'e',
'P',
'r',
'o',
'f',
'i',
'l',
'e',0};
47static const WCHAR szwFullLangfmt[] = {
'%',
's',
'\\',
'%',
's',
'\\',
'%',
's',
'\\',
'0',
'x',
'%',
'0',
'8',
'x',
'\\',
'%',
's',0};
49static const WCHAR szwAssemblies[] = {
'A',
's',
's',
'e',
'm',
'b',
'l',
'i',
'e',
's',0};
52static const WCHAR szwDefaultFmt[] = {
'%',
's',
'\\',
'%',
's',
'\\',
'0',
'x',
'%',
'0',
'8',
'x',
'\\',
'%',
's',0};
110 *
ppv = &
This->IEnumTfInputProcessorProfiles_iface;
112 TRACE(
"(%p)->(IID_IEnumTfInputProcessorProfiles %p)\n",
This,
ppv);
113 *
ppv = &
This->IEnumTfInputProcessorProfiles_iface;
226 DWORD disposition = 0;
254 *
ppv = &
This->ITfInputProcessorProfiles_iface;
256 else if (
IsEqualIID(iid, &IID_ITfInputProcessorProfileMgr))
258 *
ppv = &
This->ITfInputProcessorProfileMgr_iface;
271 ITfInputProcessorProfiles_AddRef(iface);
296 ITfInputProcessorProfiles *iface,
REFCLSID rclsid)
318 ITfInputProcessorProfiles *iface,
REFCLSID rclsid)
336 ITfInputProcessorProfiles *iface,
REFCLSID rclsid,
346 DWORD disposition = 0;
348 static const WCHAR fmt2[] = {
'%',
's',
'\\',
'0',
'x',
'%',
'0',
'8',
'x',
'\\',
'%',
's',0};
349 static const WCHAR desc[] = {
'D',
'e',
's',
'c',
'r',
'i',
'p',
't',
'i',
'o',
'n',0};
350 static const WCHAR icnf[] = {
'I',
'c',
'o',
'n',
'F',
'i',
'l',
'e',0};
351 static const WCHAR icni[] = {
'I',
'c',
'o',
'n',
'I',
'n',
'd',
'e',
'x',0};
368 NULL, &fmtkey, &disposition);
400 ITfInputProcessorProfiles *iface,
IEnumGUID **ppEnum)
420 if (!
catid || !pclsid || !pguidProfile)
465 if (!rclsid || !guidProfiles)
473 if (ITfCategoryMgr_FindClosestCategory(catmgr, rclsid,
475 hr = ITfCategoryMgr_FindClosestCategory(catmgr, rclsid,
477 ITfCategoryMgr_Release(catmgr);
513 TRACE(
"Already Active\n");
517 hr = ITfInputProcessorProfiles_IsEnabledLanguageProfile(iface, rclsid,
521 TRACE(
"Not Enabled\n");
525 LanguageProfile.
clsid = *rclsid;
534 ITfInputProcessorProfiles *iface,
REFCLSID rclsid,
LANGID *plangid,
542 if (!rclsid || !plangid || !pguidProfile)
548 *pguidProfile =
profile.guidProfile;
568 ITfInputProcessorProfiles *iface,
LANGID *plangid)
576 *plangid =
This->currentLanguage;
604 ITfInputProcessorProfiles *iface,
LANGID **ppLangId,
ULONG *pulCount)
609 **ppLangId =
This->currentLanguage;
781 return ITfInputProcessorProfiles_QueryInterface(&
This->ITfInputProcessorProfiles_iface,
riid,
ppv);
787 return ITfInputProcessorProfiles_AddRef(&
This->ITfInputProcessorProfiles_iface);
793 return ITfInputProcessorProfiles_Release(&
This->ITfInputProcessorProfiles_iface);
836 enum_profiles->
ref = 1;
857 debugstr_w(pchDesc), cchDesc,
debugstr_w(pchIconFile), cchFile, uIconIndex, hklsubstitute, dwPreferredLayout,
898 return ITfInputProcessorProfiles_QueryInterface(&
This->ITfInputProcessorProfiles_iface, iid, ppvOut);
904 return ITfInputProcessorProfiles_AddRef(&
This->ITfInputProcessorProfiles_iface);
910 return ITfInputProcessorProfiles_Release(&
This->ITfInputProcessorProfiles_iface);
920 if (!
riid || !punk || !pdwCookie)
924 return advise_sink(&
This->LanguageProfileNotifySink, &IID_ITfLanguageProfileNotifySink,
970 *ppOut = (
IUnknown *)&
This->ITfInputProcessorProfiles_iface;
971 TRACE(
"returning %p\n", *ppOut);
992 *ppvOut = &
This->IEnumGUID_iface;
997 IEnumGUID_AddRef(iface);
1035 if (
This->key)
while (fetched < celt)
1045 ++(
This->next_index);
1054 if (pceltFetched) *pceltFetched = fetched;
1063 This->next_index += celt;
1071 This->next_index = 0;
1123 *ppOut = &
This->IEnumGUID_iface;
1124 TRACE(
"returning %p\n", *ppOut);
1137 ITfCategoryMgr_Release(
This->catmgr);
1149 *ppvOut = &
This->IEnumTfLanguageProfiles_iface;
1154 IEnumTfLanguageProfiles_AddRef(iface);
1186 WCHAR profileid[39];
1190 static const WCHAR fmt[] = {
'%',
's',
'\\',
'%',
's',
'\\',
'0',
'x',
'%',
'0',
'8',
'x',0};
1201 This->lang_index = 0;
1211 ++(
This->lang_index);
1225 if (ITfCategoryMgr_FindClosestCategory(
This->catmgr, &
clsid,
1227 ITfCategoryMgr_FindClosestCategory(
This->catmgr, &
clsid,
1244 if (
This->tipkey)
while (fetched < ulCount)
1254 ++(
This->tip_index);
1258 while ( fetched < ulCount)
1273 if (pcFetch) *pcFetch = fetched;
1288 This->tip_index = 0;
1292 This->lang_index = 0;
1316 static const WCHAR fmt[] = {
'%',
's',
'\\',
'%',
's',
'\\',
'0',
'x',
'%',
'0',
'8',
'x',0};
#define InterlockedIncrement
#define InterlockedDecrement
#define WINE_DEFAULT_DEBUG_CHANNEL(t)
static void list_init(struct list_entry *head)
#define RegCloseKey(hKey)
HRESULT CategoryMgr_Constructor(IUnknown *pUnkOuter, IUnknown **ppOut)
LSTATUS WINAPI RegDeleteTreeW(_In_ HKEY, _In_opt_ LPCWSTR)
static LSTATUS(WINAPI *pRegDeleteTreeW)(HKEY
LONG WINAPI RegCreateKeyExW(_In_ HKEY hKey, _In_ LPCWSTR lpSubKey, _In_ DWORD Reserved, _In_opt_ LPWSTR lpClass, _In_ DWORD dwOptions, _In_ REGSAM samDesired, _In_opt_ LPSECURITY_ATTRIBUTES lpSecurityAttributes, _Out_ PHKEY phkResult, _Out_opt_ LPDWORD lpdwDisposition)
LONG WINAPI RegOpenKeyExW(HKEY hKey, LPCWSTR lpSubKey, DWORD ulOptions, REGSAM samDesired, PHKEY phkResult)
LONG WINAPI RegEnumKeyExW(_In_ HKEY hKey, _In_ DWORD dwIndex, _Out_ LPWSTR lpName, _Inout_ LPDWORD lpcbName, _Reserved_ LPDWORD lpReserved, _Out_opt_ LPWSTR lpClass, _Inout_opt_ LPDWORD lpcbClass, _Out_opt_ PFILETIME lpftLastWriteTime)
LONG WINAPI RegSetValueExW(_In_ HKEY hKey, _In_ LPCWSTR lpValueName, _In_ DWORD Reserved, _In_ DWORD dwType, _In_ CONST BYTE *lpData, _In_ DWORD cbData)
LONG WINAPI RegQueryValueExW(_In_ HKEY hkeyorg, _In_ LPCWSTR name, _In_ LPDWORD reserved, _In_ LPDWORD type, _In_ LPBYTE data, _In_ LPDWORD count)
#define HeapFree(x, y, z)
LCID WINAPI GetUserDefaultLCID(void)
HRESULT WINAPI CLSIDFromString(LPCOLESTR idstr, LPCLSID id)
INT WINAPI StringFromGUID2(REFGUID id, LPOLESTR str, INT cmax)
GLuint GLuint GLsizei count
GLenum GLenum GLsizei const GLuint GLboolean enabled
GLenum GLuint GLenum GLsizei const GLchar * buf
GLsizei GLenum GLboolean sink
LPVOID WINAPI CoTaskMemAlloc(SIZE_T size)
static const WCHAR desc[]
DWORD get_Cookie_magic(DWORD id)
BOOL get_active_textservice(REFCLSID rclsid, TF_LANGUAGEPROFILE *profile)
HRESULT add_active_textservice(TF_LANGUAGEPROFILE *lp)
HRESULT unadvise_sink(DWORD cookie)
const WCHAR szwSystemCTFKey[]
void free_sinks(struct list *sink_list)
const WCHAR szwSystemTIPKey[]
HRESULT advise_sink(struct list *sink_list, REFIID riid, DWORD cookie_magic, IUnknown *unk, DWORD *cookie)
EXTERN_C const GUID GUID_TFCAT_TIP_KEYBOARD
EXTERN_C const GUID GUID_TFCAT_TIP_SPEECH
EXTERN_C const GUID GUID_TFCAT_TIP_HANDWRITING
#define SINK_FOR_EACH(cursor, list, type, elem)
#define COOKIE_MAGIC_IPPSINK
#define REG_CREATED_NEW_KEY
#define IsEqualGUID(rguid1, rguid2)
#define IsEqualIID(riid1, riid2)
SOCKET WSAAPI accept(IN SOCKET s, OUT LPSOCKADDR addr, OUT INT FAR *addrlen)
WCHAR szwCurrentClsid[39]
IEnumTfLanguageProfiles IEnumTfLanguageProfiles_iface
IEnumGUID IEnumGUID_iface
#define CONTAINING_RECORD(address, type, field)
_In_ PCCERT_CONTEXT _In_ DWORD dwFlags
#define CLASS_E_NOAGGREGATION
#define HKEY_LOCAL_MACHINE
#define HKEY_CURRENT_USER