Как остановить цикл Wndproc ()? - PullRequest
0 голосов
/ 07 февраля 2019

Я переопределил wndproc () для использования горячих клавиш.но форма больше не закроется.и закрывая форму, программа застряла в бесконечном цикле в wndproc ().

 protected override void WndProc(ref Message m)
    {
        base.WndProc(ref m);

        if (m.Msg == 0x0312)
        {


            Keys key = (Keys)(((int)m.LParam >> 16) & 0xFFFF);                  

            int id = m.WParam.ToInt32();                                        


            MessageBox.Show("Hotkey has been pressed!");
            // do something
        }

    }

Я установил для e.cancel значение true и добавил следующие коды в методе OnFoemClosing `

 e.Cancel = false;
 base.OnFormClosing(e);

Но ничего не происходит.

1 Ответ

0 голосов
/ 17 июля 2019
[DllImport("user32.dll")]
static extern bool DestroyWindow(IntPtr hWnd);

//Closes the form
btnCloseWindow_Click(object sender, EventArgs e)
{
     DestroyWindow(this.Handle);
}`[DllImport("user32.dll")]
static extern bool DestroyWindow(IntPtr hWnd);

//Closes the form
btnCloseWindow_Click(object sender, EventArgs e)
{
     DestroyWindow(this.Handle);
}`
...