Set an overlapped hEvent before calling any APCs.
[wine] / dlls / imm32 / imm.c
1 /*
2  *      IMM32 stubs - please implement!
3  *
4  *      Copyright 1998  Patrik Stridvall
5  *
6  * This library is free software; you can redistribute it and/or
7  * modify it under the terms of the GNU Lesser General Public
8  * License as published by the Free Software Foundation; either
9  * version 2.1 of the License, or (at your option) any later version.
10  *
11  * This library is distributed in the hope that it will be useful,
12  * but WITHOUT ANY WARRANTY; without even the implied warranty of
13  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
14  * Lesser General Public License for more details.
15  *
16  * You should have received a copy of the GNU Lesser General Public
17  * License along with this library; if not, write to the Free Software
18  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
19  */
20
21 #include "winbase.h"
22 #include "windef.h"
23 #include "wingdi.h"
24 #include "winuser.h"
25 #include "winerror.h"
26 #include "immddk.h"
27
28 #include "wine/debug.h"
29 WINE_DEFAULT_DEBUG_CHANNEL(imm);
30
31 /***********************************************************************
32  *              ImmAssociateContext (IMM32.@)
33  */
34 HIMC WINAPI ImmAssociateContext(HWND hWnd, HIMC hIMC)
35 {
36   FIXME("(0x%08x, 0x%08x): stub\n",hWnd,hIMC);
37   SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
38   return (HIMC)NULL;
39 }
40
41 /***********************************************************************
42  *              ImmConfigureIMEA (IMM32.@)
43  */
44 BOOL WINAPI ImmConfigureIMEA(
45   HKL hKL, HWND hWnd, DWORD dwMode, LPVOID lpData)
46 {
47   FIXME("(0x%08x, 0x%08x, %ld, %p): stub\n",
48     hKL, hWnd, dwMode, lpData
49   );
50   SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
51   return FALSE;
52 }
53
54 /***********************************************************************
55  *              ImmConfigureIMEW (IMM32.@)
56  */
57 BOOL WINAPI ImmConfigureIMEW(
58   HKL hKL, HWND hWnd, DWORD dwMode, LPVOID lpData)
59 {
60   FIXME("(0x%08x, 0x%08x, %ld, %p): stub\n",
61     hKL, hWnd, dwMode, lpData
62   );
63   SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
64   return FALSE;
65 }
66
67 /***********************************************************************
68  *              ImmDisableIME (IMM32.@)
69  */
70 BOOL WINAPI ImmDisableIME(
71   DWORD idThread)
72 {
73   FIXME("(idThread %lu): stub\n", idThread);
74   SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
75   return FALSE;
76 }
77
78 /***********************************************************************
79  *              ImmEscapeA (IMM32.@)
80  */
81 LRESULT WINAPI ImmEscapeA(
82   HKL hKL, HIMC hIMC, 
83   UINT uEscape, LPVOID lpData)
84 {
85   FIXME("(0x%08x, 0x%08x, %d, %p): stub\n",
86     hKL, hIMC, uEscape, lpData
87   );
88   SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
89   return 0;
90 }
91
92 /***********************************************************************
93  *              ImmEscapeW (IMM32.@)
94  */
95 LRESULT WINAPI ImmEscapeW(
96   HKL hKL, HIMC hIMC,
97   UINT uEscape, LPVOID lpData)
98 {
99   FIXME("(0x%08x, 0x%08x, %d, %p): stub\n",
100     hKL, hIMC, uEscape, lpData
101   );
102   SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
103   return 0;
104 }
105
106 /***********************************************************************
107  *              ImmGetCandidateListA (IMM32.@)
108  */
109 DWORD WINAPI ImmGetCandidateListA(
110   HIMC hIMC, DWORD deIndex, 
111   LPCANDIDATELIST lpCandList, DWORD dwBufLen)
112 {
113   FIXME("(0x%08x, %ld, %p, %ld): stub\n",
114     hIMC, deIndex,
115     lpCandList, dwBufLen
116   );
117   SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
118   return 0;
119 }
120
121 /***********************************************************************
122  *              ImmGetCandidateListCountA (IMM32.@)
123  */
124 DWORD WINAPI ImmGetCandidateListCountA(
125   HIMC hIMC, LPDWORD lpdwListCount)
126 {
127   FIXME("(0x%08x, %p): stub\n", hIMC, lpdwListCount);
128   SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
129   return 0;
130 }
131
132 /***********************************************************************
133  *              ImmGetCandidateListCountW (IMM32.@)
134  */
135 DWORD WINAPI ImmGetCandidateListCountW(
136   HIMC hIMC, LPDWORD lpdwListCount)
137 {
138   FIXME("(0x%08x, %p): stub\n", hIMC, lpdwListCount);
139   SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
140   return 0;
141 }
142
143 /***********************************************************************
144  *              ImmGetCandidateListW (IMM32.@)
145  */
146 DWORD WINAPI ImmGetCandidateListW(
147   HIMC hIMC, DWORD deIndex, 
148   LPCANDIDATELIST lpCandList, DWORD dwBufLen)
149 {
150   FIXME("(0x%08x, %ld, %p, %ld): stub\n",
151     hIMC, deIndex,
152     lpCandList, dwBufLen
153   );
154   SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
155   return 0;
156 }
157
158 /***********************************************************************
159  *              ImmGetCandidateWindow (IMM32.@)
160  */
161 BOOL WINAPI ImmGetCandidateWindow(
162   HIMC hIMC, DWORD dwBufLen, LPCANDIDATEFORM lpCandidate)
163 {
164   FIXME("(0x%08x, %ld, %p): stub\n", hIMC, dwBufLen, lpCandidate);
165   SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
166   return FALSE;
167 }
168
169 /***********************************************************************
170  *              ImmGetCompositionFontA (IMM32.@)
171  */
172 BOOL WINAPI ImmGetCompositionFontA(HIMC hIMC, LPLOGFONTA lplf)
173 {
174   FIXME("(0x%08x, %p): stub\n", hIMC, lplf);
175   SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
176   return FALSE;
177 }
178
179 /***********************************************************************
180  *              ImmGetCompositionFontW (IMM32.@)
181  */
182 BOOL WINAPI ImmGetCompositionFontW(HIMC hIMC, LPLOGFONTW lplf)
183 {
184   FIXME("(0x%08x, %p): stub\n", hIMC, lplf);
185   SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
186   return FALSE;
187 }
188
189 /***********************************************************************
190  *              ImmGetCompositionStringA (IMM32.@)
191  */
192 LONG WINAPI ImmGetCompositionStringA(
193   HIMC hIMC, DWORD dwIndex, LPVOID lpBuf, DWORD dwBufLen)
194 {
195   OSVERSIONINFOA version;
196   FIXME("(0x%08x, %ld, %p, %ld): stub\n",
197     hIMC, dwIndex, lpBuf, dwBufLen
198   );
199   SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
200   version.dwOSVersionInfoSize = sizeof(OSVERSIONINFOA);
201   GetVersionExA( &version );
202   switch(version.dwPlatformId)
203   {
204   case VER_PLATFORM_WIN32_WINDOWS: return -1;
205   case VER_PLATFORM_WIN32_NT: return 0;
206   default:
207       FIXME("%ld not supported\n",version.dwPlatformId);
208       return -1;
209   }
210 }
211
212 /***********************************************************************
213  *              ImmGetCompositionStringW (IMM32.@)
214  */
215 LONG WINAPI ImmGetCompositionStringW(
216   HIMC hIMC, DWORD dwIndex, 
217   LPVOID lpBuf, DWORD dwBufLen)
218 {
219   OSVERSIONINFOA version;
220   FIXME("(0x%08x, %ld, %p, %ld): stub\n",
221     hIMC, dwIndex, lpBuf, dwBufLen
222   );
223   SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
224   version.dwOSVersionInfoSize = sizeof(OSVERSIONINFOA);
225   GetVersionExA( &version );
226   switch(version.dwPlatformId)
227   {
228   case VER_PLATFORM_WIN32_WINDOWS: return -1;
229   case VER_PLATFORM_WIN32_NT: return 0;
230   default:
231       FIXME("%ld not supported\n",version.dwPlatformId);
232       return -1;
233   }
234 }
235
236 /***********************************************************************
237  *              ImmGetCompositionWindow (IMM32.@)
238  */
239 BOOL WINAPI ImmGetCompositionWindow(HIMC hIMC, LPCOMPOSITIONFORM lpCompForm)
240 {
241   FIXME("(0x%08x, %p): stub\n", hIMC, lpCompForm);
242   SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
243   return 0;
244 }
245
246 /***********************************************************************
247  *              ImmGetContext (IMM32.@)
248  */
249 HIMC WINAPI ImmGetContext(HWND hWnd)
250 {
251   FIXME("(0x%08x): stub\n", hWnd);
252   SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
253   return (HIMC)NULL;
254 }
255
256 /***********************************************************************
257  *              ImmGetConversionListA (IMM32.@)
258  */
259 DWORD WINAPI ImmGetConversionListA(
260   HKL hKL, HIMC hIMC,
261   LPCSTR pSrc, LPCANDIDATELIST lpDst,
262   DWORD dwBufLen, UINT uFlag)
263 {
264   FIXME("(0x%08x, 0x%08x, %s, %p, %ld, %d): stub\n",
265     hKL, hIMC, debugstr_a(pSrc), lpDst, dwBufLen, uFlag
266   );
267   SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
268   return 0;
269 }
270
271 /***********************************************************************
272  *              ImmGetConversionListW (IMM32.@)
273  */
274 DWORD WINAPI ImmGetConversionListW(
275   HKL hKL, HIMC hIMC,
276   LPCWSTR pSrc, LPCANDIDATELIST lpDst,
277   DWORD dwBufLen, UINT uFlag)
278 {
279   FIXME("(0x%08x, 0x%08x, %s, %p, %ld, %d): stub\n",
280     hKL, hIMC, debugstr_w(pSrc), lpDst, dwBufLen, uFlag
281   );
282   SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
283   return 0;
284 }
285
286 /***********************************************************************
287  *              ImmGetConversionStatus (IMM32.@)
288  */
289 BOOL WINAPI ImmGetConversionStatus(
290   HIMC hIMC, LPDWORD lpfdwConversion, LPDWORD lpfdwSentence)
291 {
292   FIXME("(0x%08x, %p, %p): stub\n",
293     hIMC, lpfdwConversion, lpfdwSentence
294   );
295   SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
296   return FALSE;
297 }
298
299 /***********************************************************************
300  *              ImmGetDefaultIMEWnd (IMM32.@)
301  */
302 HWND WINAPI ImmGetDefaultIMEWnd(HWND hWnd)
303 {
304   FIXME("(0x%08x): stub\n", hWnd);
305   SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
306   return (HWND)NULL;
307 }
308
309 /***********************************************************************
310  *              ImmGetDescriptionA (IMM32.@)
311  */
312 UINT WINAPI ImmGetDescriptionA(
313   HKL hKL, LPSTR lpszDescription, UINT uBufLen)
314 {
315   FIXME("(0x%08x, %s, %d): stub\n",
316     hKL, debugstr_a(lpszDescription), uBufLen
317   );
318   SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
319   return 0;
320 }
321
322 /***********************************************************************
323  *              ImmGetDescriptionW (IMM32.@)
324  */
325 UINT WINAPI ImmGetDescriptionW(HKL hKL, LPWSTR lpszDescription, UINT uBufLen)
326 {
327   FIXME("(0x%08x, %s, %d): stub\n",
328     hKL, debugstr_w(lpszDescription), uBufLen
329   );
330   SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
331   return 0;
332 }
333
334 /***********************************************************************
335  *              ImmGetGuideLineA (IMM32.@)
336  */
337 DWORD WINAPI ImmGetGuideLineA(
338   HIMC hIMC, DWORD dwIndex, LPSTR lpBuf, DWORD dwBufLen)
339 {
340   FIXME("(0x%08x, %ld, %s, %ld): stub\n",
341     hIMC, dwIndex, debugstr_a(lpBuf), dwBufLen
342   );
343   SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
344   return 0;
345 }
346
347 /***********************************************************************
348  *              ImmGetGuideLineW (IMM32.@)
349  */
350 DWORD WINAPI ImmGetGuideLineW(HIMC hIMC, DWORD dwIndex, LPWSTR lpBuf, DWORD dwBufLen)
351 {
352   FIXME("(0x%08x, %ld, %s, %ld): stub\n",
353     hIMC, dwIndex, debugstr_w(lpBuf), dwBufLen
354   );
355   SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
356   return 0;
357 }
358
359 /***********************************************************************
360  *              ImmGetOpenStatus (IMM32.@)
361  */
362 BOOL WINAPI ImmGetOpenStatus(HIMC hIMC)
363 {
364   FIXME("(0x%08x): stub\n", hIMC);
365   SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
366   return FALSE;
367 }
368
369 /***********************************************************************
370  *              ImmGetStatusWindowPos (IMM32.@)
371  */
372 BOOL WINAPI ImmGetStatusWindowPos(HIMC hIMC, LPPOINT lpptPos)
373 {
374   FIXME("(0x%08x, %p): stub\n", hIMC, lpptPos);
375   SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
376   return FALSE;
377 }
378
379 /***********************************************************************
380  *              ImmGetVirtualKey (IMM32.@)
381  */
382 UINT WINAPI ImmGetVirtualKey(HWND hWnd)
383 {
384   OSVERSIONINFOA version;
385   FIXME("(0x%08x): stub\n", hWnd);
386   SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
387   version.dwOSVersionInfoSize = sizeof(OSVERSIONINFOA);
388   GetVersionExA( &version );
389   switch(version.dwPlatformId)
390   {
391   case VER_PLATFORM_WIN32_WINDOWS:
392       return VK_PROCESSKEY;
393   case VER_PLATFORM_WIN32_NT:
394       return 0;
395   default:
396       FIXME("%ld not supported\n",version.dwPlatformId);
397       return VK_PROCESSKEY;
398   }
399 }
400
401 /***********************************************************************
402  *              ImmNotifyIME (IMM32.@)
403  */
404 BOOL WINAPI ImmNotifyIME(
405   HIMC hIMC, DWORD dwAction, DWORD dwIndex, DWORD dwValue)
406 {
407   FIXME("(0x%08x, %ld, %ld, %ld): stub\n",
408     hIMC, dwAction, dwIndex, dwValue
409   );
410   SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
411   return FALSE;
412 }
413
414 /***********************************************************************
415  *              ImmRegisterWordA (IMM32.@)
416  */
417 BOOL WINAPI ImmRegisterWordA(
418   HKL hKL, LPCSTR lpszReading, DWORD dwStyle, LPCSTR lpszRegister)
419 {
420   FIXME("(0x%08x, %s, %ld, %s): stub\n",
421     hKL, debugstr_a(lpszReading), dwStyle, debugstr_a(lpszRegister)
422   );
423   SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
424   return FALSE;
425 }
426
427 /***********************************************************************
428  *              ImmRegisterWordW (IMM32.@)
429  */
430 BOOL WINAPI ImmRegisterWordW(
431   HKL hKL, LPCWSTR lpszReading, DWORD dwStyle, LPCWSTR lpszRegister)
432 {
433   FIXME("(0x%08x, %s, %ld, %s): stub\n",
434     hKL, debugstr_w(lpszReading), dwStyle, debugstr_w(lpszRegister)
435   );
436   SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
437   return FALSE;
438 }
439
440 /***********************************************************************
441  *              ImmReleaseContext (IMM32.@)
442  */
443 BOOL WINAPI ImmReleaseContext(HWND hWnd, HIMC hIMC)
444 {
445   FIXME("(0x%08x, 0x%08x): stub\n", hWnd, hIMC);
446   SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
447   return FALSE;
448 }
449
450 /***********************************************************************
451  *              ImmSetCandidateWindow (IMM32.@)
452  */
453 BOOL WINAPI ImmSetCandidateWindow(
454   HIMC hIMC, LPCANDIDATEFORM lpCandidate)
455 {
456   FIXME("(0x%08x, %p): stub\n", hIMC, lpCandidate);
457   SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
458   return FALSE;
459 }
460
461 /***********************************************************************
462  *              ImmSetCompositionFontA (IMM32.@)
463  */
464 BOOL WINAPI ImmSetCompositionFontA(HIMC hIMC, LPLOGFONTA lplf)
465 {
466   FIXME("(0x%08x, %p): stub\n", hIMC, lplf);
467   SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
468   return FALSE;
469 }
470
471 /***********************************************************************
472  *              ImmSetCompositionFontW (IMM32.@)
473  */
474 BOOL WINAPI ImmSetCompositionFontW(HIMC hIMC, LPLOGFONTW lplf)
475 {
476   FIXME("(0x%08x, %p): stub\n", hIMC, lplf);
477   SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
478   return FALSE;
479 }
480
481 /***********************************************************************
482  *              ImmSetCompositionStringA (IMM32.@)
483  */
484 BOOL WINAPI ImmSetCompositionStringA(
485   HIMC hIMC, DWORD dwIndex, 
486   LPCVOID lpComp, DWORD dwCompLen, 
487   LPCVOID lpRead, DWORD dwReadLen)
488 {
489   FIXME("(0x%08x, %ld, %p, %ld, %p, %ld): stub\n",
490     hIMC, dwIndex, lpComp, dwCompLen, lpRead, dwReadLen
491   );
492   SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
493   return FALSE;
494 }
495
496 /***********************************************************************
497  *              ImmSetCompositionStringW (IMM32.@)
498  */
499 BOOL WINAPI ImmSetCompositionStringW(
500         HIMC hIMC, DWORD dwIndex,
501         LPCVOID lpComp, DWORD dwCompLen,
502         LPCVOID lpRead, DWORD dwReadLen)
503 {
504   FIXME("(0x%08x, %ld, %p, %ld, %p, %ld): stub\n",
505     hIMC, dwIndex, lpComp, dwCompLen, lpRead, dwReadLen
506   );
507   SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
508   return FALSE;
509 }
510
511 /***********************************************************************
512  *              ImmSetCompositionWindow (IMM32.@)
513  */
514 BOOL WINAPI ImmSetCompositionWindow(
515   HIMC hIMC, LPCOMPOSITIONFORM lpCompForm)
516 {
517   FIXME("(0x%08x, %p): stub\n", hIMC, lpCompForm);
518   SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
519   return FALSE;
520 }
521
522 /***********************************************************************
523  *              ImmSetConversionStatus (IMM32.@)
524  */
525 BOOL WINAPI ImmSetConversionStatus(
526   HIMC hIMC, DWORD fdwConversion, DWORD fdwSentence)
527 {
528   FIXME("(0x%08x, %ld, %ld): stub\n",
529     hIMC, fdwConversion, fdwSentence
530   );
531   SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
532   return FALSE;
533 }
534
535 /***********************************************************************
536  *              ImmSetOpenStatus (IMM32.@)
537  */
538 BOOL WINAPI ImmSetOpenStatus(HIMC hIMC, BOOL fOpen)
539 {
540   FIXME("(0x%08x, %d): stub\n", hIMC, fOpen);
541   SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
542   return FALSE;
543 }
544
545 /***********************************************************************
546  *              ImmSetStatusWindowPos (IMM32.@)
547  */
548 BOOL WINAPI ImmSetStatusWindowPos(HIMC hIMC, LPPOINT lpptPos)
549 {
550   FIXME("(0x%08x, %p): stub\n", hIMC, lpptPos);
551   SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
552   return FALSE;
553 }
554
555 /***********************************************************************
556  *              ImmSimulateHotKey (IMM32.@)
557  */
558 BOOL WINAPI ImmSimulateHotKey(HWND hWnd, DWORD dwHotKeyID)
559 {
560   FIXME("(0x%08x, %ld): stub\n", hWnd, dwHotKeyID);
561   SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
562   return FALSE;
563 }
564
565 /***********************************************************************
566  *              ImmUnregisterWordA (IMM32.@)
567  */
568 BOOL WINAPI ImmUnregisterWordA(
569   HKL hKL, LPCSTR lpszReading, DWORD dwStyle, LPCSTR lpszUnregister)
570 {
571   FIXME("(0x%08x, %s, %ld, %s): stub\n",
572     hKL, debugstr_a(lpszReading), dwStyle, debugstr_a(lpszUnregister)
573   );
574   SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
575   return FALSE;
576 }
577
578 /***********************************************************************
579  *              ImmUnregisterWordW (IMM32.@)
580  */
581 BOOL WINAPI ImmUnregisterWordW(
582   HKL hKL, LPCWSTR lpszReading, DWORD dwStyle, LPCWSTR lpszUnregister)
583 {
584   FIXME("(0x%08x, %s, %ld, %s): stub\n",
585     hKL, debugstr_w(lpszReading), dwStyle, debugstr_w(lpszUnregister)
586   );
587   SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
588   return FALSE;
589 }
590
591 /***********************************************************************
592  *              ImmCreateSoftKeyboard (IMM32.@)
593  */
594 HWND WINAPI ImmCreateSoftKeyboard(UINT uType, HWND hOwner, int x, int y)
595 {
596         FIXME("(0x%08x, 0x%08x, %d, %d): stub\n", uType, (unsigned)hOwner, x, y);
597         SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
598         return (HWND)NULL;
599 }
600
601 /***********************************************************************
602  *              ImmDestroySoftKeyboard (IMM32.@)
603  */
604 BOOL WINAPI ImmDestroySoftKeyboard(HWND hwndSoftKeyboard)
605 {
606         FIXME("(0x%08x): stub\n", (unsigned)hwndSoftKeyboard);
607         SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
608         return FALSE;
609 }
610
611 /***********************************************************************
612  *              ImmShowSoftKeyboard (IMM32.@)
613  */
614 BOOL WINAPI ImmShowSoftKeyboard(HWND hwndSoftKeyboard, int nCmdShow)
615 {
616         FIXME("(0x%08x, %d): stub\n", (unsigned)hwndSoftKeyboard, nCmdShow);
617         SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
618         return FALSE;
619 }
620
621 /***********************************************************************
622  *              ImmGetHotKey (IMM32.@)
623  */
624 BOOL WINAPI ImmGetHotKey(DWORD dwHotKeyID, LPUINT lpuModifiers,
625                          LPUINT lpuVKey, LPHKL lphKL)
626 {
627         FIXME("(0x%08lx, %p, %p, %p): stub\n",
628                dwHotKeyID, lpuModifiers, lpuVKey, lphKL);
629         SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
630         return FALSE;
631 }
632
633 /***********************************************************************
634  *              ImmSetHotKey (IMM32.@)
635  */
636 BOOL WINAPI ImmSetHotKey(DWORD dwHotKeyID, UINT uModifiers,
637                          UINT uVKey, HKL hKL)
638 {
639         FIXME("(0x%08lx, 0x%08x, 0x%08x, 0x%08x): stub\n",
640                dwHotKeyID, uModifiers, uVKey, (unsigned)hKL);
641         SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
642         return FALSE;
643 }
644
645 /***********************************************************************
646  *              ImmGenerateMessage (IMM32.@)
647  */
648 BOOL WINAPI ImmGenerateMessage(HIMC hIMC)
649 {
650         FIXME("(0x%08x): stub\n", (unsigned)hIMC);
651         SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
652         return FALSE;
653 }
654
655
656