Программирование на Visual C++. Архив рассылки | страница 3
>void CMyView::OnSize(UINT nType, int cx, int cy) {
> CFormView::OnSize(nType, cx, cy);
> .
> .
> // ... добавьте вот это:
> if (::IsWindow(m_Btn.m_hWnd)) // условие на корректность
> m_Btn.MoveWindow(cx - BtnWidth - 10, BtnY, cx - 10, BtnY + BtnHeight, 0); // двигаем кнопку
> // конец кода для добавления.
> .
> .
>}
Здесь вместо BtnY вставьте желаемую Y-координату кнопки, BtnWidth и BtnHeight – соответственно целевые ширина и высота кнопки.
Параметр cx, передаваемый в функцию - это новая ширина окна. Данный код изменяет положение кнопки, чтобы она оставалась ширины Btn_Width и отстояла от правого края окна на 10 единиц. Функция MoveWindow() меняет размер и положение кнопки. Если вы не знаете BtnY|Width|Height, то их можно определить с помощью функции m_btn.GetClientRect(), ведь любой элемент управления - это, в принципе, тоже окно.
Выравнивание по нижнему краю производится аналогично, просто по смыслу меняются параметры MoveWindow().
Ну вот, на сегодня пока все. Жду ваших писем с замечаниями, предложениями и пожеланиями. До скорого!
(C) 2000 by Алекс Jenter mailto:jenter@mail.ru.
Программирование на Visual C++
Выпуск №2 от 20/6/2000
Приветствую вас, уважаемые подписчики!
Очень рад, что число вас растет, несмотря на то, что рассылка еще не вышла из категории "Рассылки для каждого" и не была официально анонсирована. Если новоподписавшимся интересно узнать, о чем мы в рассылке беседуем, они могут посмотреть в архиве первый выпуск.
Сегодня мы немного поговорим об устройстве MFC, а также рассмотрим один интересный вопрос.
Как известно, основой всех основ в MFC является класс CObject. Основным назначением этого класса является предоставление некоторых базовых возможностей всем своим наследникам, а именно доступ к информации о классе во время выполнения и поддержка сериализации, т.е. сохраняемости объектов.
Однако уровень предоставляемых возможностей варьируется в зависимости от вашего выбора; он зависит от включения определенных макросов объявления и реализации при создании классов – наследников CObject. Без сомнения, вы с этими макросами уже сталкивались, например в коде, который генерируют Wizard'ы. Пришла пора разобраться с ними более детально.
Итак, на характер вашего класса, производного от CObject, вы можете влиять с помощью нескольких макросов. Существуют определенные пары макросов — один включается в объявление класса (имеет префикс DECLARE_), а соответствующий ему — в реализацию (префикс IMPLEMENT_).