Шаг 49 - Меняем размер и икону диалогового окна

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

Используем проект из прошлого шага.

Добавим в ресурсы икону. Мы этого не делали, но принцип тот же. Как и меню, панели инструментов и строковые ресурсы.

49_1.gif (7573 b)

Можете нечего с ней не делать, то есть оставить, как есть.

Создаем код

Изменим нашу функцию реакции нажатия на кнопку.

void CTestDlg::OnSend()
{
MoveWindow( 100, 100 , 300, 300,TRUE ); // Переместить окно
HICON newIcon= AfxGetApp()->LoadIcon(IDI_ICON1); // Прочитать икону
SetIcon(newIcon,TRUE); // Установить икону
SetWindowText("Move"); // Поменять заголовок
}

Вот так будет реагировать окно на нажатие кнопки Send.

49_2.gif (7111 b)

Описание

Цель данного шага научиться делать то, что вроде запрещено. Итак, у нас диалоговое окно, в котором изменять размер запрещено. Это часто бывает обоснованно. Проще запретить изменение размера окна, чем постоянно центрировать элементы. При установке удаленного доступа, по нажатию на СВЕДЕНИЯ диалоговое окно увеличивается, хотя мышкой размер изменить нельзя. Все эти эффекты и многие другие основаны на том, что диалоговое окно имеет хорошего папу в виде CWnd. Свойствами папы мы и воспользуемся. MoveWindow перемещает окно. Первые два параметра - это положение относительно рабочего стола, а вторые два параметра это ширина и высота, TRUE указывает на необходимость перерисовки окна. А так как ширина и высота указывается, мы этим и пользуемся для изменения диалогового окна. Следующие строки кода меняют иконку диалогового окна. Для этого нам необходимо получить указатель на иконку, этот указатель, получается, через класс окна. Это функция LoadIcon, результатом её пополнения является указатель на иконку. В эту функцию передается идентификатор иконки из ресурсов. Функция SetIcon используя указатель, устанавливает иконку в диалоговом окне. SetWindowsText изменяет текст заголовка диалогового окна. Запускайте и компилируйте. Нажимайте на кнопку. Окно переместится , изменится иконка, и заголовок окна.

Шпаргалка

Дополнительные возможности можно получить исследую базовые классы.

Загрузить проект | Предыдущий Шаг | Следующий Шаг | Оглавление
Автор Каев Артем.