www.adept7.kiev.ua
| Форум| Гостевая| Ссылки| Программы| Исходные тексты| Наши партнеры.|
   
| Главная| Рассылки| Услуги| Библиотека| Новости| Авторам| Программистам| Студентам|
delphi c++ assembler
  http://tikitak.narod.ru ---- Главная страница сайта

Шаг 56 - Эффекты OnSysCommand

Создание проекта

Работаем с нашим диалоговым окном из прошлого проекта.

Создание кода

Виртуальная функция в классе диалогового окна
class CTestDlg : public CDialog
{
    public:  
	.......
	 afx_msg void OnSysCommand( UINT i, LONG l);
	.......
};
Реализация
void CTestDlg::OnSysCommand( UINT i, LONG l)
{
 ............
 // В описании разговор идет именно о этой части.
 ...........
}
И обязательно в макросах событий
BEGIN_MESSAGE_MAP(CTestDlg, CDialog)
   ..........
   ON_WM_SYSCOMMAND()
   ..........
END_MESSAGE_MAP()

Описание

OnSysCommand позволяет Вам обрабатывать многие события связанные с изменением окна, как минимизация, восстановление, перемещение и т.д. Для оценки того, что эта команда значит, сделайте так.
void CTestDlg::OnSysCommand( UINT i, LONG l)
{
}
И запустите. Вы будете потрясены. Окно нельзя переместить, свернуть, окно, как китайская стена, просто непреклонно. Даже к системному меню нет доступа.

Для того, чтобы оживить все-таки окно, надо вызвать функцию OnSysCommand у предка. Но эта функция переданна из далека. Еще от прадедушки CWnd.

void CTestDlg::OnSysCommand( UINT i, LONG l)
{
	CDialog::OnSysCommand(i,l);
}
И все нормально. Если Вы меня спросите зачем всё это делается, я буду страшно удивлен. Честно. Теперь мы можем отслеживать минимизацию, перемещение окна , или запретить, например, восстановление. Все что надо сделать - разобраться с параметрами передающимися в эту функцию. Первый параметр, который у нас UINT отвечает как раз за тип команды. Давайте отловим событие минимизации.
void CTestDlg::OnSysCommand( UINT i, LONG l)
{
	if (i!=SC_MINIMIZE) CDialog::OnSysCommand(i,l);
}
Окно не будет уменьшаться. Мы просто проглотили эту команду, не дав её обработать. Последний параметр в OnSysCommand отвечает за координаты курсора, если команда выбрана мышью из меню.


Предыдущий Шаг | Следующий Шаг | Оглавление

By Artem.
Используются технологии uCoz
 

Rambler's Top100 Rambler's Top100

©  Adept Design Studio

Используются технологии uCoz