none
¿Cómo sería la traducción de este pequeño código en VB.NET? RRS feed

  • Pregunta

  •     #region IMessageFilter Members
        private const UInt32 WM_KEYDOWN = 0x0100;
        public bool PreFilterMessage(ref Message m)
        {
            if (m.Msg == WM_KEYDOWN)
            {
                Keys keyCode = (Keys)(int)m.WParam & Keys.KeyCode;
                if (keyCode == Keys.Escape)
                {
                    //Hacer algo
                }
                return true;
            }
            return false;
        }
        #endregion
    miércoles, 18 de diciembre de 2019 16:05

Respuestas

  • Private Const WM_KEYDOWN As UInt32 = &H0100 Public Function PreFilterMessage(ByRef m As Message) As Boolean If m.Msg = WM_KEYDOWN Then Dim keyCode As Keys = CType(CInt(m.WParam), Keys) And Keys.KeyCode If keyCode = Keys.Escape Then

    'Hacer algo End If Return True End If Return False End Function


    • Marcado como respuesta James2016-2 miércoles, 18 de diciembre de 2019 16:43
    miércoles, 18 de diciembre de 2019 16:17
  • Public ClassForm16
        Inherits Form
        Implements IMessageFilter
    
    ...
    
        Application.AddMessageFilter(Me)
    

    Si te sale un error en "Implements IMessageFilter", significa que la definicion de PreFilterMessage no concuerda exactamente con la forma en que se ha declarado en IMessageFilter. Si te ocurre esto, usa la F12 para ver cual es la declaracion exacta y corrige el metodo.

    • Marcado como respuesta James2016-2 miércoles, 18 de diciembre de 2019 17:15
    miércoles, 18 de diciembre de 2019 17:09

Todas las respuestas

  • Private Const WM_KEYDOWN As UInt32 = &H0100 Public Function PreFilterMessage(ByRef m As Message) As Boolean If m.Msg = WM_KEYDOWN Then Dim keyCode As Keys = CType(CInt(m.WParam), Keys) And Keys.KeyCode If keyCode = Keys.Escape Then

    'Hacer algo End If Return True End If Return False End Function


    • Marcado como respuesta James2016-2 miércoles, 18 de diciembre de 2019 16:43
    miércoles, 18 de diciembre de 2019 16:17
  • Gracias, ese mismo código tiene en la declaración de la clase algo como esto:

      public partial class Form16 : Form,IMessageFilter

    y en el evento load

                Application.AddMessageFilter(this);

    Lo traduje así, pero no funcionó:

                          Application.AddMessageFilter(CType(Me, IMessageFilter))

    ¿Cómo serían esas dos líneas, porfa?

    miércoles, 18 de diciembre de 2019 16:42
  • Public ClassForm16
        Inherits Form
        Implements IMessageFilter
    
    ...
    
        Application.AddMessageFilter(Me)
    

    Si te sale un error en "Implements IMessageFilter", significa que la definicion de PreFilterMessage no concuerda exactamente con la forma en que se ha declarado en IMessageFilter. Si te ocurre esto, usa la F12 para ver cual es la declaracion exacta y corrige el metodo.

    • Marcado como respuesta James2016-2 miércoles, 18 de diciembre de 2019 17:15
    miércoles, 18 de diciembre de 2019 17:09
  • Ahora sí funcionó. Muchas gracias.
    miércoles, 18 de diciembre de 2019 17:15