About SCS_CHANGEATTR

SCS_CHANGEATTR effects only attribute information. The IME should not update the composition string, the clause information of the composition string, the reading of the composition string, or the clause information of reading of the composition string.

First, the IME checks the new attribute to determine if it is acceptable. Second, the IME sets the new attribute in the COMPOSITIONSTRING structure of hIMC. At last, the IME generates the WM_IME_COMPOSITION message.

If it is necessary, IME may update the candidate information and generate the candidate messages IMN_OPENCANDIDATE, IMN_CHANGECANDIDATE, or IMN_CLOSECANDIDATE.

IME cannot finalize the composition string.

If the lpRead parameter of ImeSetCompositionString is available, the IME follows the new attribute in lpRead. The IME should also make a new attribute of the composition string for the current composition string. At this time, the clause information will not be changed.

The composition string, the attribute, the clause information, the reading string, the reading attribute, and the reading clause information must be available. The IME generates WM_IME_COMPOSITION with (GCS_COMP | GCS_COMPREAD). If the IME cannot accept the new attribute that is in lpRead, the IME does not need to generate any message and returns FALSE.

If the lpComp parameter of ImeSetCompositionString is available, the IME follows the new attribute in lpComp. At this time, the clause information will not change.

If the capability of the IME has SCS_CAP_MAKEREAD and the reading string is available, the IME should make a new attribute of the reading of the composition string for the current reading of the composition string.

If both lpRead and lpComp are available and if the IME can accept the new information, the IME sets the new information into the COMPOSITION structure of hIMC and generates WM_IME_COMPOSITION with (GCS_COMP | GCS_COMPREAD).