Ejemplo n.º 1
0
        protected virtual void OnChar(string c)
        {
            if (this.Char == null)
            {
                return;
            }
            CompositionEventArgs e = new CompositionEventArgs(c, this.OpenStatus, this.isComposition);

            this.Char(this, e);
        }
Ejemplo n.º 2
0
        protected virtual void OnCharAlt(string c, bool open, bool composition)
        {
            if (this.Char == null)
            {
                return;
            }
            CompositionEventArgs e = new CompositionEventArgs(c, open, composition, true);

            this.Char(this, e);
        }
Ejemplo n.º 3
0
        //--以下 特異的 event
        protected virtual void OnComposition(int lParam)
        {
            if (this.Composition == null)
            {
                return;
            }
            if ((lParam & (int)IME.GCS.RESULTSTR) == 0)
            {
                return;
            }
            CompositionEventArgs e = new CompositionEventArgs(this.GetCompositionString(IME.GCS.RESULTSTR), true, true);

            this.Composition(this, e);
        }
Ejemplo n.º 4
0
 protected override void WndProc(ref Message m)
 {
     if (CompositionEvent != null && m.Msg == WM_IME_COMPOSITION)
     {
         if (((int)m.LParam & GCS_RESULTREADSTR) > 0)
         {
             int           Imc = ImmGetContext(this.Handle);
             int           sz  = ImmGetCompositionString(Imc, GCS_RESULTREADSTR, null, 0);
             StringBuilder str = new StringBuilder(sz);
             ImmGetCompositionString(Imc, GCS_RESULTREADSTR, str, str.Capacity);
             ImmReleaseContext(this.Handle, Imc);
             CompositionEventArgs args = new CompositionEventArgs();
             args.ImeStr = str.ToString();
             CompositionEvent(this, args);
         }
     }
     base.WndProc(ref m);
 }
Ejemplo n.º 5
0
        private static void IMEControl_CompositionEvent(CompositionEventArgs comp)
        {
            switch (comp.state)
            {
            case CompositionState.StartComposition:
            case CompositionState.EndComposition:
            case CompositionState.Composing:
                KeyboardInput_.comp.caret = comp.caretPos;
                KeyboardInput_.comp.text  = comp.strComp;
                break;

            case CompositionState.Commit:
                foreach (char ch in comp.strCommit)
                {
                    CharEntered?.Invoke(null, new CharacterEventArgs(ch, 0));
                }
                break;

            default:
                break;
            }
        }