Задание 1. Изменить пиктограммы окна и курсора в проекте.
В папку с проектом кидаем 2 файла с расширениями *.ico и *.cur. В проекте, открываем окно ресурсов. В окне ресурсов смотрим папки Icon и Cursor. В них вложены IDI_ICON1 и IDI_ICON2, и IDC_CURSOR1, IDC_CURSOR2 соответственно.
Правой кнопкой вызываем контекстное меню, выбираем пункт «Добавить ресурс» → Icon → Импорт → Выбираем наш файл ico. В папке Icon окна ресурсов появился IDI_ICON3.
Правой кнопкой снова вызываем контекстное меню, выбираем пункт «Добавить ресурс» → Cursor → Импорт → Выбираем наш файл cur. В папке Cursor окна ресурсов появился IDC_CURSOR3.
Сохраняем изменения в файле resource.h
Вносим изменения в код проекта.
// Заполнение структуры WNDCLASS для регистрации класса главного окна.
memset(&wcMain, 0, sizeof(wcMain)); // Очистка полей структуры нулями
wcMain.lpszClassName=szMainClassName; // Имя класса окон
wcMain.lpfnWndProc=(WNDPROC)MainWndProc; // Адрес оконной функции
wcMain.style=CS_HREDRAW|CS_VREDRAW; // Стиль класса окон
wcMain.hInstance=hInst; // Экземпляр приложения
wcMain.hIcon=LoadIcon(hInst,MAKEINTRESOURCE(IDI_ICON1)); // Пиктограмма для окон
wcMain.hCursor=LoadCursor(hInst,MAKEINTRESOURCE(IDC_CURSOR1)); // Курсор мыши для окон
wcMain.hbrBackground=(HBRUSH)COLOR_WINDOW; // Кисть для окон
wcMain.lpszMenuName=MAKEINTRESOURCE(IDR_MENU1); // Ресурс меню окон
wcMain.cbClsExtra=0; // Дополнительная память
wcMain.cbWndExtra=0; // Дополнительная память
IDI_ICON1 меняем на IDI_ICON3, IDC_CURSOR1 меняем на IDC_CURSOR2.
Таким образом, должна произойти замена
курсора с на
иконки окна с на
Запускаем проект и проверяем.
Курсор и иконка окна проекта заменились на выбранные нами.
Задание 2. События по нажатию кнопок мыши и клавиш клавиатуры.
Для обработки событий по нажатию кнопок мыши и клавиш клавиатуры используются следующие функции:
- WM_LBUTTONDOWN – одиночное нажатие левой кнопки мыши;
|
- WM_RBUTTONDOWN – одиночное нажатие правой кнопки мыши;
- WM_LBUTTONDBLCLK – двойной щелчок левой кнопкой мыши;
- WM_RBUTTONDBLCLK – двойной щелчок правой кнопкой мыши;
- WM_KEYDOWN – нажата клавиша на клавиатуре.
Пусть по двойному щелчку левой кнопки мыши в MessageBox на экран выводится сообщение «Группа ЦПОИС-18п», а по нажатию клавиши space – «Нажата клавиша space».
Для этого в функцию главного окна проекта добавляем код для обработки события по двойному нажатию левой кнопки мыши:
case WM_LBUTTONDBLCLK:
{
MessageBox(hWnd, "Группа ЦПОИС-18п", "Группа ЦПОИС-18п",
MB_OK);
}; break;
и для клавиши space клавиатуры:
case WM_KEYDOWN:
{ int nVirtKey = (int) wParam;
switch(nVirtKey)
{
case VK_SPACE:
MessageBox(hWnd,"Нажата клавиша space", "Нажата клавиша space",MB_OK);
break;
}
}
Задание 3. Изменение цвета заливки многоугольника в проекте.
Задан пятиугольник. По нажатию клавиши a он будет менять цвет на желтый, по нажатию клавиши b – на синий. Цвет указывается в RGB.
Для этого создаем пятиугольник:
case WM_PAINT:
{
PAINTSTRUCT ps; // Структура для рисования
HDC hdc; //Дескриптор контекста рабочей области окна
hdc=BeginPaint(hWnd,&ps);
HPEN hPen=(HPEN)CreatePen(PS_SOLID,2,RGB(255,0,0));
HPEN hOldPen=(HPEN)SelectObject(hdc,hPen);
HBRUSH rnd=CreateSolidBrush(RGB(255,0,0));
HBRUSH old=(HBRUSH)SelectObject(hdc,hbrush);
Polygon(hdc,tri,5);
SelectObject(hdc,hOldPen);
DeleteObject(hPen);
SelectObject(hdc,old);
DeleteObject(hbrush);
EndPaint(hWnd,&ps);
};break;
По умолчанию пятиугольник красный. Для изменения цвета заливки многоугольника при нажатии соответствующих клавиш:
case WM_CHAR:
{
CHAR chCharCode = (CHAR) wParam;
switch(chCharCode)
{
case 'a': // Введен прописной символ A
hbrush=CreateSolidBrush(RGB(255,250,0));// Обработка нажатия клавиши 'A'
break;
case 'b': // Введен прописной символ B
|
hbrush=CreateSolidBrush(RGB(0,50,250));// Обработка нажатия клавиши 'B'
break;
} InvalidateRect(hWnd,NULL,TRUE);
break;
}
Цвет границы остается красным.