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.

875 lines
17 KiB

  1. /*++
  2. Copyright (c) 1985 - 1999, Microsoft Corporation
  3. Module Name:
  4. imm32.cpp
  5. Abstract:
  6. This file implements the IMM32 class.
  7. Author:
  8. Revision History:
  9. Notes:
  10. --*/
  11. #include "private.h"
  12. #include "cimm32.h"
  13. HRESULT
  14. Imm32_CreateContext(
  15. OUT HIMC *phIMC
  16. )
  17. {
  18. HIMC hIMC = imm32::ImmCreateContext();
  19. if (hIMC) {
  20. *phIMC = hIMC;
  21. return S_OK;
  22. }
  23. return E_FAIL;
  24. }
  25. HRESULT
  26. Imm32_DestroyContext(
  27. IN HIMC hIMC
  28. )
  29. {
  30. return (imm32::ImmDestroyContext(hIMC)) ? S_OK
  31. : E_FAIL;
  32. }
  33. HRESULT
  34. Imm32_LockIMC(
  35. HIMC hIMC,
  36. OUT INPUTCONTEXT **ppIMC
  37. )
  38. {
  39. return (*ppIMC = imm32::ImmLockIMC(hIMC)) ? S_OK
  40. : E_FAIL;
  41. }
  42. HRESULT
  43. Imm32_UnlockIMC(
  44. IN HIMC hIMC
  45. )
  46. {
  47. imm32::ImmUnlockIMC(hIMC);
  48. return S_OK;
  49. }
  50. HRESULT
  51. Imm32_GetIMCLockCount(
  52. IN HIMC hIMC,
  53. OUT DWORD* pdwLockCount
  54. )
  55. {
  56. *pdwLockCount = imm32::ImmGetIMCLockCount(hIMC);
  57. return S_OK;
  58. }
  59. HRESULT
  60. Imm32_AssociateContext(
  61. IN HWND hWnd,
  62. IN HIMC hIMC,
  63. OUT HIMC *phPrev
  64. )
  65. {
  66. *phPrev = imm32::ImmAssociateContext(hWnd, hIMC);
  67. return S_OK;
  68. }
  69. HRESULT
  70. Imm32_AssociateContextEx(
  71. IN HWND hWnd,
  72. IN HIMC hIMC,
  73. IN DWORD dwFlags
  74. )
  75. {
  76. return (imm32::ImmAssociateContextEx(hWnd, hIMC, dwFlags)) ? S_OK
  77. : E_FAIL;
  78. }
  79. HRESULT
  80. Imm32_GetContext(
  81. IN HWND hWnd,
  82. OUT HIMC *phIMC
  83. )
  84. {
  85. *phIMC = imm32::ImmGetContext(hWnd);
  86. return S_OK;
  87. }
  88. HRESULT
  89. Imm32_ReleaseContext(
  90. IN HWND hWnd,
  91. IN HIMC hIMC
  92. )
  93. {
  94. return (imm32::ImmReleaseContext(hWnd, hIMC)) ? S_OK
  95. : E_FAIL;
  96. }
  97. HRESULT
  98. Imm32_CreateIMCC(
  99. IN DWORD dwSize,
  100. OUT HIMCC *phIMCC
  101. )
  102. {
  103. HIMCC hIMCC = imm32::ImmCreateIMCC(dwSize);
  104. if (hIMCC) {
  105. *phIMCC = hIMCC;
  106. return S_OK;
  107. }
  108. else
  109. return E_FAIL;
  110. }
  111. HRESULT
  112. Imm32_DestroyIMCC(
  113. IN HIMCC hIMCC
  114. )
  115. {
  116. /*
  117. * ImmDestroyIMCC maped to LocalFree.
  118. * if the function fails, the return value is equal to a handle to the local memory object.
  119. * if the function succeeds, the return value is NULL.
  120. */
  121. return (imm32::ImmDestroyIMCC(hIMCC)) ? E_FAIL
  122. : S_OK;
  123. }
  124. HRESULT
  125. Imm32_LockIMCC(
  126. IN HIMCC hIMCC,
  127. OUT void **ppv
  128. )
  129. {
  130. return (*ppv = imm32::ImmLockIMCC(hIMCC)) ? S_OK
  131. : E_FAIL;
  132. }
  133. HRESULT
  134. Imm32_UnlockIMCC(
  135. IN HIMCC hIMCC
  136. )
  137. {
  138. if (imm32::ImmUnlockIMCC(hIMCC)) {
  139. // memory object still locked.
  140. return S_OK;
  141. }
  142. else {
  143. DWORD err = GetLastError();
  144. if (err == NO_ERROR)
  145. // memory object is unlocked.
  146. return S_OK;
  147. else if (err == ERROR_NOT_LOCKED)
  148. // memory object is already unlocked.
  149. return S_OK;
  150. }
  151. return E_FAIL;
  152. }
  153. HRESULT
  154. Imm32_GetIMCCSize(
  155. IN HIMCC hIMCC,
  156. OUT DWORD *pdwSize
  157. )
  158. {
  159. *pdwSize = imm32::ImmGetIMCCSize(hIMCC);
  160. return S_OK;
  161. }
  162. HRESULT
  163. Imm32_ReSizeIMCC(
  164. IN HIMCC hIMCC,
  165. IN DWORD dwSize,
  166. OUT HIMCC *phIMCC
  167. )
  168. {
  169. HIMCC hNewIMCC = imm32::ImmReSizeIMCC(hIMCC, dwSize);
  170. if (hNewIMCC) {
  171. *phIMCC = hNewIMCC;
  172. return S_OK;
  173. }
  174. else
  175. return E_FAIL;
  176. }
  177. HRESULT
  178. Imm32_GetIMCCLockCount(
  179. IN HIMCC hIMCC,
  180. OUT DWORD* pdwLockCount
  181. )
  182. {
  183. *pdwLockCount = imm32::ImmGetIMCCLockCount(hIMCC);
  184. return S_OK;
  185. }
  186. HRESULT
  187. Imm32_GetOpenStatus(
  188. IN HIMC hIMC
  189. )
  190. {
  191. return imm32::ImmGetOpenStatus(hIMC) ? S_OK : S_FALSE;
  192. }
  193. HRESULT
  194. Imm32_SetOpenStatus(
  195. HIMC hIMC,
  196. BOOL fOpen
  197. )
  198. {
  199. return (imm32::ImmSetOpenStatus(hIMC, fOpen)) ? S_OK
  200. : E_FAIL;
  201. }
  202. HRESULT
  203. Imm32_GetConversionStatus(
  204. IN HIMC hIMC,
  205. OUT DWORD *lpfdwConversion,
  206. OUT DWORD *lpfdwSentence
  207. )
  208. {
  209. return (imm32::ImmGetConversionStatus(hIMC, lpfdwConversion, lpfdwSentence)) ? S_OK
  210. : E_FAIL;
  211. }
  212. HRESULT
  213. Imm32_SetConversionStatus(
  214. IN HIMC hIMC,
  215. IN DWORD fdwConversion,
  216. IN DWORD fdwSentence
  217. )
  218. {
  219. return (imm32::ImmSetConversionStatus(hIMC, fdwConversion, fdwSentence)) ? S_OK
  220. : E_FAIL;
  221. }
  222. HRESULT
  223. Imm32_GetStatusWindowPos(
  224. IN HIMC hIMC,
  225. OUT POINT *lpptPos
  226. )
  227. {
  228. return (imm32::ImmGetStatusWindowPos(hIMC, lpptPos)) ? S_OK
  229. : E_FAIL;
  230. }
  231. HRESULT
  232. Imm32_SetStatusWindowPos(
  233. IN HIMC hIMC,
  234. IN POINT *lpptPos
  235. )
  236. {
  237. return (imm32::ImmSetStatusWindowPos(hIMC, lpptPos)) ? S_OK
  238. : E_FAIL;
  239. }
  240. HRESULT
  241. Imm32_GetCompositionString(
  242. IN HIMC hIMC,
  243. IN DWORD dwIndex,
  244. IN DWORD dwCompLen,
  245. OUT LONG*& lpCopied,
  246. OUT LPVOID lpBuf,
  247. BOOL fUnicode
  248. )
  249. {
  250. LONG lRet;
  251. lRet = fUnicode ? imm32::ImmGetCompositionStringW(hIMC, dwIndex, lpBuf, dwCompLen)
  252. : imm32::ImmGetCompositionStringA(hIMC, dwIndex, lpBuf, dwCompLen);
  253. if (lRet < 0)
  254. return E_FAIL;
  255. else {
  256. *lpCopied = lRet;
  257. return S_OK;
  258. }
  259. }
  260. HRESULT
  261. Imm32_SetCompositionString(
  262. IN HIMC hIMC,
  263. IN DWORD dwIndex,
  264. IN LPVOID lpComp,
  265. IN DWORD dwCompLen,
  266. IN LPVOID lpRead,
  267. IN DWORD dwReadLen,
  268. BOOL fUnicode
  269. )
  270. {
  271. if (fUnicode ? imm32::ImmSetCompositionStringW(hIMC, dwIndex, lpComp, dwCompLen, lpRead, dwReadLen)
  272. : imm32::ImmSetCompositionStringA(hIMC, dwIndex, lpComp, dwCompLen, lpRead, dwReadLen)
  273. )
  274. return S_OK;
  275. else
  276. return E_FAIL;
  277. }
  278. HRESULT
  279. Imm32_GetCompositionFont(
  280. IN HIMC hIMC,
  281. IN LOGFONTAW* lplf,
  282. BOOL fUnicode
  283. )
  284. {
  285. if (fUnicode ? imm32::ImmGetCompositionFontW(hIMC, &lplf->W)
  286. : imm32::ImmGetCompositionFontA(hIMC, &lplf->A)
  287. )
  288. return S_OK;
  289. else
  290. return E_FAIL;
  291. }
  292. HRESULT
  293. Imm32_SetCompositionFont(
  294. IN HIMC hIMC,
  295. IN LOGFONTAW* lplf,
  296. BOOL fUnicode
  297. )
  298. {
  299. if (fUnicode ? imm32::ImmSetCompositionFontW(hIMC, &lplf->W)
  300. : imm32::ImmSetCompositionFontA(hIMC, &lplf->A)
  301. )
  302. return S_OK;
  303. else
  304. return E_FAIL;
  305. }
  306. HRESULT
  307. Imm32_GetCompositionWindow(
  308. IN HIMC hIMC,
  309. OUT COMPOSITIONFORM *lpCompForm
  310. )
  311. {
  312. return (imm32::ImmGetCompositionWindow(hIMC, lpCompForm)) ? S_OK
  313. : E_FAIL;
  314. }
  315. HRESULT
  316. Imm32_SetCompositionWindow(
  317. IN HIMC hIMC,
  318. IN COMPOSITIONFORM *lpCompForm
  319. )
  320. {
  321. return (imm32::ImmSetCompositionWindow(hIMC, lpCompForm)) ? S_OK
  322. : E_FAIL;
  323. }
  324. HRESULT
  325. Imm32_GetCandidateList(
  326. IN HIMC hIMC,
  327. IN DWORD dwIndex,
  328. IN DWORD dwBufLen,
  329. OUT LPCANDIDATELIST lpCandList,
  330. OUT UINT* puCopied,
  331. BOOL fUnicode
  332. )
  333. {
  334. DWORD dwRet;
  335. dwRet = fUnicode ? imm32::ImmGetCandidateListW(hIMC, dwIndex, lpCandList, dwBufLen)
  336. : imm32::ImmGetCandidateListA(hIMC, dwIndex, lpCandList, dwBufLen);
  337. if (dwRet) {
  338. *puCopied = dwRet;
  339. return S_OK;
  340. }
  341. else
  342. return E_FAIL;
  343. }
  344. HRESULT
  345. Imm32_GetCandidateListCount(
  346. IN HIMC hIMC,
  347. OUT DWORD* lpdwListSize,
  348. OUT DWORD* pdwBufLen,
  349. BOOL fUnicode
  350. )
  351. {
  352. DWORD dwRet;
  353. dwRet = fUnicode ? imm32::ImmGetCandidateListCountW(hIMC, lpdwListSize)
  354. : imm32::ImmGetCandidateListCountA(hIMC, lpdwListSize);
  355. if (dwRet) {
  356. *pdwBufLen = dwRet;
  357. return S_OK;
  358. }
  359. else
  360. return E_FAIL;
  361. }
  362. HRESULT
  363. Imm32_GetCandidateWindow(
  364. IN HIMC hIMC,
  365. IN DWORD dwIndex,
  366. OUT CANDIDATEFORM *lpCandidate
  367. )
  368. {
  369. return (imm32::ImmGetCandidateWindow(hIMC, dwIndex, lpCandidate)) ? S_OK
  370. : E_FAIL;
  371. }
  372. HRESULT
  373. Imm32_SetCandidateWindow(
  374. IN HIMC hIMC,
  375. IN CANDIDATEFORM *lpCandForm
  376. )
  377. {
  378. return (imm32::ImmSetCandidateWindow(hIMC, lpCandForm)) ? S_OK
  379. : E_FAIL;
  380. }
  381. HRESULT
  382. Imm32_GetGuideLine(
  383. IN HIMC hIMC,
  384. IN DWORD dwIndex,
  385. IN DWORD dwBufLen,
  386. OUT CHARAW* pBuf,
  387. OUT DWORD* pdwResult,
  388. BOOL fUnicode
  389. )
  390. {
  391. *pdwResult = fUnicode ? imm32::ImmGetGuideLineW(hIMC, dwIndex, &pBuf->W, dwBufLen)
  392. : imm32::ImmGetGuideLineA(hIMC, dwIndex, &pBuf->A, dwBufLen);
  393. return S_OK;
  394. }
  395. HRESULT
  396. Imm32_NotifyIME(
  397. IN HIMC hIMC,
  398. IN DWORD dwAction,
  399. IN DWORD dwIndex,
  400. IN DWORD dwValue
  401. )
  402. {
  403. return (imm32::ImmNotifyIME(hIMC, dwAction, dwIndex, dwValue)) ? S_OK
  404. : E_FAIL;
  405. }
  406. HRESULT
  407. Imm32_GetImeMenuItems(
  408. IN HIMC hIMC,
  409. IN DWORD dwFlags,
  410. IN DWORD dwType,
  411. IN IMEMENUITEMINFOAW *pImeParentMenu,
  412. OUT IMEMENUITEMINFOAW *pImeMenu,
  413. IN DWORD dwSize,
  414. OUT DWORD* pdwResult,
  415. BOOL fUnicode
  416. )
  417. {
  418. *pdwResult = fUnicode ? imm32::ImmGetImeMenuItemsW(hIMC, dwFlags, dwType, &pImeParentMenu->W, &pImeMenu->W, dwSize)
  419. : imm32::ImmGetImeMenuItemsA(hIMC, dwFlags, dwType, &pImeParentMenu->A, &pImeMenu->A, dwSize);
  420. return S_OK;
  421. }
  422. HRESULT
  423. Imm32_GenerateMessage(
  424. IN HIMC hIMC
  425. )
  426. {
  427. return (imm32::ImmGenerateMessage(hIMC)) ? S_OK
  428. : E_FAIL;
  429. }
  430. /*
  431. * hWnd
  432. */
  433. HRESULT
  434. Imm32_GetDefaultIMEWnd(
  435. IN HWND hWnd,
  436. OUT HWND *phDefWnd
  437. )
  438. {
  439. *phDefWnd = imm32::ImmGetDefaultIMEWnd(hWnd);
  440. return S_OK;
  441. }
  442. HRESULT
  443. Imm32_GetVirtualKey(
  444. HWND hWnd,
  445. UINT* puVirtualKey
  446. )
  447. {
  448. *puVirtualKey = imm32::ImmGetVirtualKey(hWnd);
  449. return S_OK;
  450. }
  451. HRESULT
  452. Imm32_IsUIMessageA(
  453. HWND hWndIME,
  454. UINT msg,
  455. WPARAM wParam,
  456. LPARAM lParam
  457. )
  458. {
  459. return imm32::ImmIsUIMessageA(hWndIME, msg, wParam, lParam) ? S_OK : S_FALSE;
  460. }
  461. HRESULT
  462. Imm32_IsUIMessageW(
  463. HWND hWndIME,
  464. UINT msg,
  465. WPARAM wParam,
  466. LPARAM lParam
  467. )
  468. {
  469. return imm32::ImmIsUIMessageW(hWndIME, msg, wParam, lParam) ? S_OK : S_FALSE;
  470. }
  471. HRESULT
  472. Imm32_SimulateHotKey(
  473. HWND hWnd,
  474. DWORD dwHotKeyID
  475. )
  476. {
  477. return imm32::ImmSimulateHotKey(hWnd, dwHotKeyID) ? S_OK : S_FALSE;
  478. }
  479. /*
  480. * hKL
  481. */
  482. HRESULT
  483. Imm32_GetProperty(
  484. HKL hKL,
  485. DWORD dwOffset,
  486. DWORD* pdwProperty
  487. )
  488. {
  489. *pdwProperty = imm32::ImmGetProperty(hKL, dwOffset);
  490. return S_OK;
  491. }
  492. HRESULT
  493. Imm32_Escape(
  494. HKL hKL,
  495. HIMC hIMC,
  496. UINT uEscape,
  497. LPVOID lpData,
  498. LRESULT *plResult,
  499. BOOL fUnicode
  500. )
  501. {
  502. *plResult = (fUnicode) ? imm32::ImmEscapeW(hKL, hIMC, uEscape, lpData)
  503. : imm32::ImmEscapeA(hKL, hIMC, uEscape, lpData);
  504. return S_OK;
  505. }
  506. HRESULT
  507. Imm32_GetDescription(
  508. HKL hKL,
  509. UINT uBufLen,
  510. CHARAW* lpsz,
  511. UINT* puCopied,
  512. BOOL fUnicode
  513. )
  514. {
  515. *puCopied = (fUnicode) ? imm32::ImmGetDescriptionW(hKL, &lpsz->W, uBufLen)
  516. : imm32::ImmGetDescriptionA(hKL, &lpsz->A, uBufLen);
  517. return *puCopied ? S_OK : E_FAIL;
  518. }
  519. HRESULT
  520. Imm32_IsIME(
  521. HKL hKL
  522. )
  523. {
  524. return imm32::ImmIsIME(hKL) ? S_OK : E_FAIL;
  525. }
  526. /*
  527. * win98/nt5 apis
  528. */
  529. HRESULT
  530. Imm32_RequestMessage(
  531. HIMC hIMC,
  532. WPARAM wParam,
  533. LPARAM lParam,
  534. LRESULT* plResult,
  535. BOOL fUnicode
  536. )
  537. {
  538. *plResult = (fUnicode) ? imm32::ImmRequestMessageW(hIMC, wParam, lParam)
  539. : imm32::ImmRequestMessageA(hIMC, wParam, lParam);
  540. return S_OK;
  541. }
  542. /*
  543. * Register Word
  544. */
  545. HRESULT
  546. Imm32_EnumRegisterWordA(
  547. HKL hKL,
  548. LPSTR szReading,
  549. DWORD dwStyle,
  550. LPSTR szRegister,
  551. LPVOID lpData,
  552. IEnumRegisterWordA **pEnum
  553. )
  554. {
  555. return E_FAIL;
  556. }
  557. HRESULT
  558. Imm32_EnumRegisterWordW(
  559. HKL hKL,
  560. LPWSTR szReading,
  561. DWORD dwStyle,
  562. LPWSTR szRegister,
  563. LPVOID lpData,
  564. IEnumRegisterWordW **pEnum
  565. )
  566. {
  567. return E_FAIL;
  568. }
  569. HRESULT
  570. Imm32_GetRegisterWordStyleA(
  571. HKL hKL,
  572. UINT nItem,
  573. STYLEBUFA *lpStyleBuf,
  574. UINT *puCopied
  575. )
  576. {
  577. *puCopied = imm32::ImmGetRegisterWordStyleA(hKL, nItem, lpStyleBuf);
  578. return S_OK;
  579. }
  580. HRESULT
  581. Imm32_GetRegisterWordStyleW(
  582. HKL hKL,
  583. UINT nItem,
  584. STYLEBUFW *lpStyleBuf,
  585. UINT *puCopied
  586. )
  587. {
  588. *puCopied = imm32::ImmGetRegisterWordStyleW(hKL, nItem, lpStyleBuf);
  589. return S_OK;
  590. }
  591. HRESULT
  592. Imm32_RegisterWordA(
  593. HKL hKL,
  594. LPSTR lpszReading,
  595. DWORD dwStyle,
  596. LPSTR lpszRegister
  597. )
  598. {
  599. return imm32::ImmRegisterWordA(hKL, lpszReading, dwStyle, lpszRegister) ? S_OK : E_FAIL;
  600. }
  601. HRESULT
  602. Imm32_RegisterWordW(
  603. HKL hKL,
  604. LPWSTR lpszReading,
  605. DWORD dwStyle,
  606. LPWSTR lpszRegister
  607. )
  608. {
  609. return imm32::ImmRegisterWordW(hKL, lpszReading, dwStyle, lpszRegister) ? S_OK : E_FAIL;
  610. }
  611. HRESULT
  612. Imm32_UnregisterWordA(
  613. HKL hKL,
  614. LPSTR lpszReading,
  615. DWORD dwStyle,
  616. LPSTR lpszUnregister
  617. )
  618. {
  619. return imm32::ImmUnregisterWordA(hKL, lpszReading, dwStyle, lpszUnregister) ? S_OK : E_FAIL;
  620. }
  621. HRESULT
  622. Imm32_UnregisterWordW(
  623. HKL hKL,
  624. LPWSTR lpszReading,
  625. DWORD dwStyle,
  626. LPWSTR lpszUnregister
  627. )
  628. {
  629. return imm32::ImmUnregisterWordW(hKL, lpszReading, dwStyle, lpszUnregister) ? S_OK : E_FAIL;
  630. }
  631. /*
  632. *
  633. */
  634. HRESULT
  635. Imm32_ConfigureIMEA(
  636. HKL hKL,
  637. HWND hWnd,
  638. DWORD dwMode,
  639. REGISTERWORDA *lpdata
  640. )
  641. {
  642. return imm32::ImmConfigureIMEA(hKL, hWnd, dwMode, lpdata) ? S_OK : E_FAIL;
  643. }
  644. HRESULT
  645. Imm32_ConfigureIMEW(
  646. HKL hKL,
  647. HWND hWnd,
  648. DWORD dwMode,
  649. REGISTERWORDW *lpdata
  650. )
  651. {
  652. return imm32::ImmConfigureIMEW(hKL, hWnd, dwMode, lpdata) ? S_OK : E_FAIL;
  653. }
  654. HRESULT
  655. Imm32_GetConversionListA(
  656. HKL hKL,
  657. HIMC hIMC,
  658. LPSTR lpSrc,
  659. UINT uBufLen,
  660. UINT uFlag,
  661. CANDIDATELIST *lpDst,
  662. UINT *puCopied
  663. )
  664. {
  665. *puCopied = imm32::ImmGetConversionListA(hKL, hIMC, lpSrc, lpDst, uBufLen, uFlag);
  666. return S_OK;
  667. }
  668. HRESULT
  669. Imm32_GetConversionListW(
  670. HKL hKL,
  671. HIMC hIMC,
  672. LPWSTR lpSrc,
  673. UINT uBufLen,
  674. UINT uFlag,
  675. CANDIDATELIST *lpDst,
  676. UINT *puCopied
  677. )
  678. {
  679. *puCopied = imm32::ImmGetConversionListW(hKL, hIMC, lpSrc, lpDst, uBufLen, uFlag);
  680. return S_OK;
  681. }
  682. HRESULT
  683. Imm32_GetDescriptionA(
  684. HKL hKL,
  685. UINT uBufLen,
  686. LPSTR lpszDescription,
  687. UINT *puCopied
  688. )
  689. {
  690. *puCopied = imm32::ImmGetDescriptionA(hKL, lpszDescription, uBufLen);
  691. return S_OK;
  692. }
  693. HRESULT
  694. Imm32_GetDescriptionW(
  695. HKL hKL,
  696. UINT uBufLen,
  697. LPWSTR lpszDescription,
  698. UINT *puCopied
  699. )
  700. {
  701. *puCopied = imm32::ImmGetDescriptionW(hKL, lpszDescription, uBufLen);
  702. return S_OK;
  703. }
  704. HRESULT
  705. Imm32_GetIMEFileNameA(
  706. HKL hKL,
  707. UINT uBufLen,
  708. LPSTR lpszFileName,
  709. UINT *puCopied
  710. )
  711. {
  712. *puCopied = imm32::ImmGetIMEFileNameA(hKL, lpszFileName, uBufLen);
  713. return S_OK;
  714. }
  715. HRESULT
  716. Imm32_GetIMEFileNameW(
  717. HKL hKL,
  718. UINT uBufLen,
  719. LPWSTR lpszFileName,
  720. UINT *puCopied
  721. )
  722. {
  723. *puCopied = imm32::ImmGetIMEFileNameW(hKL, lpszFileName, uBufLen);
  724. return S_OK;
  725. }
  726. HRESULT
  727. Imm32_InstallIMEA(
  728. LPSTR lpszIMEFileName,
  729. LPSTR lpszLayoutText,
  730. HKL *phKL
  731. )
  732. {
  733. *phKL = imm32::ImmInstallIMEA(lpszIMEFileName, lpszLayoutText);
  734. return S_OK;
  735. }
  736. HRESULT
  737. Imm32_InstallIMEW(
  738. LPWSTR lpszIMEFileName,
  739. LPWSTR lpszLayoutText,
  740. HKL *phKL
  741. )
  742. {
  743. *phKL = imm32::ImmInstallIMEW(lpszIMEFileName, lpszLayoutText);
  744. return S_OK;
  745. }
  746. HRESULT
  747. Imm32_DisableIME(
  748. DWORD idThread
  749. )
  750. {
  751. return imm32::ImmDisableIME(idThread) ? S_OK : E_FAIL;
  752. }
  753. HRESULT
  754. Imm32_GetHotKey(
  755. DWORD dwHotKeyID,
  756. UINT *puModifiers,
  757. UINT *puVKey,
  758. HKL *phKL
  759. )
  760. {
  761. return E_FAIL;
  762. }
  763. HRESULT
  764. Imm32_SetHotKey(
  765. DWORD dwHotKeyID,
  766. UINT uModifiers,
  767. UINT uVKey,
  768. HKL hKL
  769. )
  770. {
  771. return E_FAIL;
  772. }
  773. HRESULT
  774. Imm32_RequestMessageA(
  775. HIMC hIMC,
  776. WPARAM wParam,
  777. LPARAM lParam,
  778. LRESULT *plResult
  779. )
  780. {
  781. return E_FAIL;
  782. }
  783. HRESULT
  784. Imm32_RequestMessageW(
  785. HIMC hIMC,
  786. WPARAM wParam,
  787. LPARAM lParam,
  788. LRESULT *plResult
  789. )
  790. {
  791. return E_FAIL;
  792. }