|
Вставка значка
Если вы вновь
посмотрите на окно диалога (рис. 4.1), то увидите справа два элемента типа Picture
Control с идентификаторами IDC_RIGHT и IDC_LEFT. Эти элементы необходимо связать
с растровыми изображениями значков (ресурсы типа Icon). Так как приложение выполняет
функции браузера, то сюда я намереваюсь вставить изображения глаз, которые в
принципе можно создать средствами графического редактора Studio.Net. Однако
более простым выходом является использование изображений, которые были созданы
мастерами своего дела и уже существуют в bmp-файлах. Достаточно много изображений
входит в стандартную поставку студии. Они расположены в нескольких папках по
адресу ...\Microsoft Visual Studio.Net\Common7\Graphics\icons. Вот алгоритм
связывания элемента типа Picture Control с растровым изображением.
- Дайте команду Project
Add > Resource (или нажмите Ctrl+R).
- В окне диалога Add Resource
выберите тип ресурса Icon и нажмите кнопку New.
- Откройте файл с каким-либо
существующим изображением File > Open и т. д., но не забудьте изменить
фильтр поиска на (*.*).
- Скопируйте найденное
и открытое в рамках студии изображение в буфер (Ctrl+C).
- Перейдите в предыдущее
окно с пустым изображением (Ctrl+F6) и вставьте его (Ctrl+V).
- В окне Properties измените
идентификатор на тот, который был задан в качестве свойства Image для элемента
Picture Control. В нашем случае это IDI_EYERIGHT или IDI_EYELEFT.
- Закройте ненужные окна.
Пользуясь этим
алгоритмом, создайте две новые картинки и свяжите их с элементами IDC RIGHT
И IDC LEFT.
Примечание
Если вы найдете изображение
одного глаза (скажем, левого) и откроете его в рамках студии, то изображение
можно скопировать в новый ресурс типа Icon и перевернуть (сделать глаз правым),
дав команду Image > Flip Horizontal. Исследуйте и другие команды этого
меню.
Элементы управления
типа Picture Control можно сделать «чувствительными». Покажем, как ввести в
приложение способность реагировать на нажатие кнопки мыши в области, занимаемой
нашими изображениями глаз. По схеме, которую вы использовали, когда вводили
в класс диалога реакцию на WM_HSCROLL, создайте функцию — обработчик сообщения
WM_LBUTTONDOWN (нажата левая кнопка мыши). В тело заготовки для функции-обработчика
внесите следующий код:
void
CLookDlg::OnLButtonDown(UINT
nFlags, CPoint point)
{
CRect
left, right;
//======
Узнаем координаты левой картинки
GetDlgItem{IDC_LEFT)->GetWindowRect(Sleft);
//======
Переход к относительным координатам
ScreenToClient(Sleft);
//======
Узнаем координаты правой картинки
GetDlgItem(IDC_RIGHT)->GetWindowRect(Sright)
;
ScreenToClient(bright);
//======
Объединяем площади двух картинок
left.UnionRect(left,right);
//======
Если координаты курсора внутри этой площади
if
(left.PtlnRect(point))
//======Вызываем
диалог About
OnSysCommand(IDM_ABOUTBOX,0);
//======
Вызов родительской версии CDialog::OnLButtonDown(nFlags, point);
}
| |