Обработка сообщений формы для Windows Mobile 6.5

У меня есть мобильное приложение для Windows, которое я хочу полностью закрыть, когда пользователи нажимают «X», а не скрывать его.

Я добавил следующий метод в свою форму, но в нем есть ошибки. Код был скопирован откуда-то еще, и, если честно, я не совсем уверен, как правильно использовать обработчики форм и т. д., поэтому я подумал, может ли кто-нибудь мне помочь?

protected override void WndProc(ref Message m)
{
if (m.Msg == 0x0005)
{ 
    // WM_SIZE
    if (m.WParam == new IntPtr(0x04))
    { 
        // SIZE_MINIMIZED
        this.Close();
    }
}
base.WndProc(ref m);
}

Ошибка 1. «Не удалось найти имя типа или пространства имен« Сообщение »(вам не хватает директивы использования или ссылки на сборку?)»

Ошибка 2. ""System.Windows.Forms.Form" не содержит определения для "WndProc""


person Karl    schedule 03.12.2012    source источник


Ответы (2)


В вашем конкретном случае самый простой способ решить актуальную проблему — просто установить для свойства MinimizeBox Form значение false. Это превращает кнопку X в белый круг с текстом «ОК». Нажатие этой кнопки приведет к выходу из цикла «Выполнить» формы, отправив сообщение «Выход», которое обычно завершает процесс, если вы явно не напишете код, чтобы сделать иначе.

person pdriegen    schedule 04.12.2012

Вы не можете переопределить WndProc в форме или элементе управления Compact Framework. Вы скопировали код из настольного проекта. Для компактного Framework это немного сложнее. Во многих случаях достаточно использовать MessageWindow, чтобы увидеть поступающие сообщения. чтобы вы отреагировали (пример можно найти здесь). Если, однако, вам нужно полностью создать подкласс, то это немного сложнее. Вот пример MSDN, который создает подклассы Control, хотя форма будет такой же.

person ctacke    schedule 03.12.2012