The IME may need to create a better user interface for a soft keyboard, or it may need to use the system predefined soft keyboard. If the IME needs to use the system predefined soft keyboard, it needs to specify UI_CAP_SOFTKBD in the fdwUICaps member of the IMEINFO structure when calling ImeInquire.
The IME can call ImmCreateSoftKeyboard to create a window for the soft keyboard, and it can call ImmShowSoftKeyboard to show or hide it. The soft keyboard window is one component of the UI window, so the owner should be the UI window.
The IME may need to decide whether to destroy the window whenever the focus is gone. The soft keyboard may occupy some system resources.
There are different types of soft keyboard. One type may be designed for a specific country or for a special purpose. The way to change reading characters may be different for each type of soft keyboard. There are two ways to change reading characters: use IMC_SETSOFKBDSUBTYPE or IMC_SETSOFKBDDATA. Different types of soft keyboards have different window procedures and present different user interfaces to the user.