Программирование на C++ глазами хакера


Нестандартные окна - часть 3


Эта функция комбинирует два региона hrgnSrc1 и hrgnSrc2 и помещает результат в переменную HrgnDest.

В функции необходимо задать режим слияния (переменная fnCombineMode). Можно указать один из следующих вариантов:

  • RGN_AND — объединить два региона (область перекрывания);
  • RGN_COPY — копировать (копия первой области);
  • RGN_DIFF — объединить разницей (удаление второй области из первой);
  • RGN_OR — объединить области;
  • RGN_XOR — объединить области, исключая все пересечения.

Результат работы программы вы можете увидеть на рис. 3.4.

Рис. 3.4. Овальное окно с прямоугольным отверстием в центре

Примечание
Исходный код этого примера вы можете найти в каталоге \Demo\Chapter3\NoneUniformWindow.

Изменять форму можно не только у окон, но и у некоторых элементов управления. Давайте рассмотрим, как это делается.

Создайте новый проект типа MFC Application. Нам сейчас не понадобится минимальный код, поэтому для упрощения воспользуемся объектной библиотекой MFC.

В Мастере создания проекта откройте раздел Application Type и выберите тип приложения Dialog based (рис. 3.5). Остальные настройки можно не менять. Я дал проекту имя None.

Откройте файл ресурсов и в разделе DIALOG дважды щелкните по пункту IDD_NONE_DIALOG. Поместите на форму (рис. 3.6) один компонент List Control.

Теперь, чтобы с этим элементом управления можно было работать, щелкните по нему правой кнопкой мыши и выберите в появившемся меню пункт Add Variable.... В открывшемся окне достаточно ввести имя переменной в поле Variable name. Укажите имя ItemsList (рис. 3.7). Нажмите кнопку Finish, чтобы завершить создание переменной.

Рис. З.5. Выбор типа приложения в окне Мастера создания проекта

Рис. З.6. Форма будущей программы None

Рис. З.7. Окно создания переменной для элементов управления

Рис. 3.8. Результат работы программы None

Откройте файл NoneDlg.cpp и найдите здесь функцию CNoneDlg::OnInitDialog(). В самый конец функции, где написан комментарий // TODO: Add extra initialization here, добавьте следующий код:




Начало  Назад  Вперед



Книжный магазин