Форум программистов, компьютерный форум, киберфорум
C++/CLI Windows Forms
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.67/27: Рейтинг темы: голосов - 27, средняя оценка - 4.67
2 / 2 / 0
Регистрация: 11.06.2012
Сообщений: 6
1

Кнопки "Свернуть" "Развернуть" "Закрыть"

30.07.2012, 22:55. Показов 5370. Ответов 3
Метки нет (Все метки)

Подскажите, как определить, что была нажата одна из кнопок "Свернуть", "Развернуть", "Закрыть", из тех, что в правом верхнем углу окна. Я так понял обычные события формы эти три кнопки не предусматривают никак, но мне нужно, чтобы при нажатии на эти кнопки выполнялись некоторые действия, непосредственно перед тем, как окно будет свёрнуто/развёрнуто/закрыто.
В интернетах находил инфу, что эти события винда сама посылает приложению, но как их поймать, я нигде найти не смог, если подскажете, буду очень рад.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
30.07.2012, 22:55
Ответы с готовыми решениями:

Код для создания собственной кнопки "свернуть" вместо системной
visual studio 2010 (windows form application) c++ хочу скрыть стандартную рамку с кнопками...

Реализация команд меню "Создать", "Сохранить", "Сохранить как ..."
Здравствуйте! Пытаюсь работать в windows forms. Cуть программы такова : пользователь открывает...

Ошибка C3867 "нестандартный синтаксис; используйте "&", чтобы создать указатель на член"
pictureBox1->Invalidate; Вызывает ошибку C3867. Что сделать то нужно? И почему тогда vs сама...

Error C2678: бинарный "<": не найден оператор, принимающий левый операнд типа "System::Decimal"
Делал программу для расчета exp, с точностью до eps = 0.1, …, 0.000001 путем разложения функции в...

__________________

Записывайтесь на профессиональные курсы C++ разработчиков
3
58 / 58 / 6
Регистрация: 10.07.2011
Сообщений: 229
31.07.2012, 10:45 2
Событие Resize возникает при сворачивании/разворачивании;
Событие FormClosed - по закрытии формы;
FormClosing - при закрытии.

Добавлено через 6 минут
C++
1
2
3
4
5
6
7
8
9
private: System::Void Form1_Resize(System::Object^  sender, System::EventArgs^  e)
             {
                 if( this->WindowState == System::Windows::Forms::FormWindowState::Maximized )
                     MessageBox::Show( "Вы хотите развернуть окно?" );
                 else if( this->WindowState == System::Windows::Forms::FormWindowState::Minimized )
                     MessageBox::Show( "Вы хотите свернуть окно?" );
                 else
                     MessageBox::Show( "Вы хотите восстановить размер окна по умолчанию?" );
             }
Добавлено через 1 минуту
Данное событие вызывается после изменения размера. Есть также событие ResizeBegin.
1
2 / 2 / 0
Регистрация: 11.06.2012
Сообщений: 6
01.08.2012, 10:07  [ТС] 3
Спасибо, но по ресайзу ещё вопрос тогда возникает.
Дело в том, что событие Resize возникает так же при изменении размеров формы (т.е. когда мышкой тянем за край окна). Вы не подскажете, с какой частотой возникает событие Resize при изменении размера окна мышью? Просто если мне нужно расширить окно, и мне это событие будет возникать каждую милисекунду, мне хотелось бы избегать лишних проверок типа
C++
1
if( this->WindowState == System::Windows::Forms::FormWindowState::Maximized )
Или оно возникает только в начале или конце перетягивания мыши?
0
58 / 58 / 6
Регистрация: 10.07.2011
Сообщений: 229
01.08.2012, 10:28 4
Цитата Сообщение от x3x3 Посмотреть сообщение
Или оно возникает только в начале или конце перетягивания мыши?
При изменении на каждый пиксел.
Если вы хотите событие по окончанию, используйте ResizeEnd
Вот код:
C++
1
2
3
4
5
6
7
8
9
    private: System::Void Form1_ResizeEnd(System::Object^  sender, System::EventArgs^  e) 
             {
                 if( this->WindowState == System::Windows::Forms::FormWindowState::Maximized )
                     MessageBox::Show( "Вы развернули окно!" );
                 else if( this->WindowState == System::Windows::Forms::FormWindowState::Minimized )
                     MessageBox::Show( "Вы свернули окно!" );
                 else
                     MessageBox::Show( "Вы восстановили размер окна по умолчанию!" );
             }
1
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
01.08.2012, 10:28

Заказываю контрольные, курсовые, дипломные работы и диссертации здесь.

При попытке показа второй формы - class "test1::Form1" не содержит члена "button1_click"
Добрый вечер всем. Учусь на специальности Энергетика Теплотехнологий и Газоснабжение. Настало...

Ошибка в коде: namespace "System" не содержит члена "ComponentModel"
Добрый вечер.Недавно занялся изучением работы с windows forms и пытаюсь создавать первые...

Ошибка: Неявное преобразование типа "string" в "int" невозможно
private void button1_Click(object sender, EventArgs e) { int a1; ...

Как правильно объявить идентификатор "HatchBrush" и "hBrush"
Помогите правильно объявить идентификатор &quot;HatchBrush&quot; и &quot;hBrush&quot;. private: System::Void...

Error C2143: синтаксическая ошибка: отсутствие ";" перед "->"
Доброго времени суток. Пишу простейшую программку: Создаю приложение Windows Form Добавляю на...

Не работает кнопка "Добавить" после нажатия "Очистить"
На форме 4 picturebox и 2 кнопки. При запуске приложения picturebox не видны, при нажатии на кнопку...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.