在C++ 可以通过lPraram指针获取LPARAM的值case WM_IME_COMPOSITION:
    if (lParam & GCS_RESULTSTR) 在C#中尝试使用protected override void WndProc(ref Message m){
switch (m.Msg)
{
case WM_IME_COMPOSITION:
 m.getLParam(Type cls)问题是cls 要求结构类型,怎么知道这个结构类型的定义?
也就是Win32 在抛出 WM_IME_COMPOSITION 事件的时候, 对LPARAM 的参数的定义格式。谢谢

解决方案 »

  1.   

    WM_IME_COMPOSITION
    The WM_IME_COMPOSITION message is sent to an application when the IME changes composition status as a result of a key stroke. An application should process this message if it displays composition characters itself. Otherwise, it should send the message to the IME window.chDBCS = (WORD) wParam;
    fFlags = (BOOL) lParam;
     
    Parameters
    chDBCS 
    DBCS character representing the latest change to the composition string. 
    fFlags 
    Change flag, indicating how the composition string or character changed. This parameter can be one or more of the following values: GCS_COMPSTR GCS_SETCURSORPOS 
    GCS_COMPATTR GCS_RESULTSTR 
    GCS_COMPCLAUSE GCS_RESULTCLAUSE 
    GCS_COMPREADSTR GCS_RESULTREADSTR 
    GCS_COMPREADATTR GCS_RESULTREADCLAUSE 
    GCS_COMPREADCLAUSE GCR_ERRORSTR 
    GCS_TYPINGINFO GCR_INFOSTR 
    Return Values
    No return value.Res
    For more information about these values, see the "IME Composition String Values" table in Input Method Editor Constants.The fFlags parameter can also be a combination of the following values:Value Meaning 
    CS_INSERTCHAR Specifies that the given composition character should be inserted at the current insertion point. An application should display the composition character if it processes this message. 
    CS_NOMOVECARET Specifies that the application must not move the caret position as a result of processing the message. For example, if an IME specifies a combination of CS_INSERTCHAR and CS_NOMOVECARET, the application should insert the given character at the current caret position but should not move caret to the next position. A subsequent WM_IME_COMPOSITION message with GCS_RESULTSTR will replace this character. 
    If the application has created an IME window, it should pass this message to that window. The DefWindowProc function processes this message by passing it to the default IME window.The IME window processes this message by updating its appearance based on the change flag given. An application can call ImmGetCompositionString to retrieve the new composition status.If none of the GCS_ values are set, the message indicates that the current composition has been canceled and applications that draw the composition string should delete the string.QuickInfo
      Windows NT: Requires version 4.0 or later.
      Windows: Requires Windows 95 or later.
      Windows CE: Requires version 2.0 or later.
      Header: Declared in imm.h.
      

  2.   

    I have read these message for the whole day, i need to know the struct type of fFlags, so i can get it through the m.getLPapram(Type cls). Any deep info is welcome.
      

  3.   

    Thanks for allAt last I use the message.LParam.ToInt32 to get the value.