Search
Module:
Directory

   Desktop Functions:

   Smart Device Functions:


Show Recent Changes
Subscribe (RSS)
Misc. Pages
Comments
FAQ
Helpful Tools
Playground
Suggested Reading
Website TODO List
Download Visual Studio Add-In

ImmGetConversionList (imm32)
 
.
Summary
TODO - a short description

C# Signature:

[DllImport("Imm32.dll", SetLastError=true)]
public static extern int ImmGetConversionList(
    IntPtr hKL,
    IntPtr hIMC,
    string lpSrc,
    IntPtr lpDst,
    int dwBufLen,
    int uFlag
    );

VB Signature:

Declare Function ImmGetConversionList Lib "Imm32.dll" (TODO) As TODO

User-Defined Types:

None.

Notes:

const int GCL_REVERSECONVERSION = 0x0002;
[StructLayout(LayoutKind.Sequential)]
public class CANDIDATELIST
{
    public int  dwSize;
    public int  dwStyle;
    public int  dwCount;
    public int  dwSelection;
    public int  dwPageStart;
    public int  dwPageSize;
    public int  dwOffset;
}

Tips & Tricks:

Please add some!

Sample Code:

public string[] GetReverseConversion(IntPtr AHwnd,string AText)
{
    string[] strList = {AText};
    if (AText.Length > 0)
    {
    IntPtr hIMC = ImmGetContext(AHwnd);
    IntPtr hKL = GetKeyboardLayout(0);
    if ((hIMC != IntPtr.Zero)&&(hKL != IntPtr.Zero))
    {
        int dwSize = ImmGetConversionList(hKL,hIMC,AText,IntPtr.Zero,0,GCL_REVERSE_LENGTH);
        if (dwSize > 0)
        {
        IntPtr BufList = Marshal.AllocHGlobal(dwSize);
        try
        {
            ImmGetConversionList(hKL,hIMC,AText,BufList,dwSize,GCL_REVERSECONVERSION);
            CANDIDATELIST list = new CANDIDATELIST();
            Marshal.PtrToStructure(BufList,list);
            byte[] buf = new byte[dwSize];
            Marshal.Copy(BufList,buf,0,dwSize);
            Marshal.FreeHGlobal(BufList);
            if (list.dwCount > 0)
            {
            int os = list.dwOffset;
            string str = System.Text.Encoding.Default.GetString(buf,os,buf.Length-os);
            char[] par = "\0".ToCharArray();
            string[] temp = str.Split(par);
            strList = new string[list.dwCount];
            Array.Copy(temp,strList,list.dwCount);
            }
        }
        finally
        {
            ImmReleaseContext(AHwnd,hIMC);
        }
        }
    }
    }
    return strList;
}

private void button1_Click(object sender, System.EventArgs e)
{
    listBox1.Items.Clear();
    listBox1.Items.AddRange(GetReverseConversion(this.Handle,textBox1.Text));
}

Alternative Managed API:

Do you know one? Please contribute it!

Documentation

Please edit this page!

Do you have...

  • helpful tips or sample code to share for using this API in managed code?
  • corrections to the existing content?
  • variations of the signature you want to share?
  • additional languages you want to include?

Select "Edit This Page" on the right hand toolbar and edit it! Or add new pages containing supporting types needed for this API (structures, delegates, and more).

 
Access PInvoke.net directly from VS:
Terms of Use
Find References
Show Printable Version
Revisions