- •Часто задаваемые вопросы при выполнении курсового проекта (Бизнес-информатика, 1 курс) Оглавление
- •Как создать проектWindows-приложения?
- •Как изменить заголовок окна?
- •Как изменить цвет фона у окна?
- •Как назначить какие-то действия на щелчок мыши?
- •Как понять, каковы были координаты мыши в момент щелчка по ее кнопке?
- •Как понять, какая клавиша на клавиатуре была нажата?
- •Что такое перо (Pen)?
- •Что такое кисть (Brush)?
- •Как сделать нестандартную закраску фигуры (картинкой, переливающимся цветом и пр.)?
- •Как задать цвет?
- •Как изменить цвет фона окна во время работы программы?
- •Как в окне нарисовать прямоугольник?
- •Как в окне нарисовать закрашенный прямоугольник?
- •Какие фигуры, кроме прямоугольника, можно рисовать?
- •Как нарисовать линию?
- •Как нарисовать фигуру, полученную в виде совместного рисования нескольких фигур, например, прямоугольника и круга?
- •Как вывести в окно текст?
- •Как задать шрифт текста?
- •Как вывести текст в рамке?
- •Как загрузить изображение из файла?
- •Как вывести изображение в окно?
- •Как принудительно вызвать событие Paint, т.Е. Перерисовать окно?
- •Где объявлять переменные, значения которых нужны для всех функций окна?
- •Как сделать анимацию?
- •Как добавить в окно таймер?
- •Что такое элемент управления?
- •Как добавить в окно текстовое поле или кнопку?
- •Как получить текст,введенныйв текстовомполе?
- •Как понять, что была нажата кнопка и выполнить какие-то действия?
- •Что такое меню?
- •Как добавить в окно меню?
- •Как назначить действия, которые должны быть выполнены при выборе пункта меню?
- •Что такое диалог?
- •Как выбрать цвет с помощью диалога?
- •Как выбрать файл с помощью диалога?
- •Как загрузить изображение из файла, чтобы фон изображения считался прозрачным?
- •Как загрузить звуковой файл?
Как понять, какая клавиша на клавиатуре была нажата?
События клавиатуры работают подобно событиям мыши.
Событие KeyPress передает аргумент типа KeyPressEventArgs. Эта структура включает KeyChar, представляющий символ нажатой клавиши.
Создадим событие KeyPress и его обработчик:
// событие KeyPress
this->KeyPress += gcnew KeyPressEventHandler(this, &Form1::MyKeyPress);
// текст обработчика
private: Void MyKeyPress(Object^ sender, KeyPressEventArgs^ e) {
MessageBox::Show("Нажата буква " + e->KeyChar);
}
Рис 10. Окно с обработчиком нажатия клавиши клавиатуры.
Если необходима дополнительная информация о нажатой клавише, то больше подойдут события KeyDown или KeyUp с параметрами KeyEventArgs. Свойства KeyEventArgs включают признак одновременного состояния клавиш <Ctrl>, <Alt> или <Shift>. Свойство KeyCode возвращает значение типа перечисления Keys, идентифицирующее нажатую клавишу. В отличие от свойства KeyPressEventArgs::KeyChar, свойство KeyCode сообщает о каждой клавише клавиатуры, а не только о буквенно-цифровых клавишах. События клавиш поступают в следующем порядке:
1. KeyDown
2. KeyPress
3. KeyUp
Добавим событие и обработчик нажатия клавиши:
// событие KeyDown
this->KeyDown += gcnew KeyEventHandler(this, &Form1::MyKeyDown);
// текст обработчика
private: Void MyKeyDown(Object^ sender, KeyEventArgs^ e) {
String^ sKey="";
switch(e->KeyCode)
{
case Keys::Up:
sKey="Up"; break;
case Keys::Down:
sKey="Down"; break;
case Keys::Left:
sKey="Left"; break;
case Keys::Right:
sKey="Right"; break;
default:
sKey="Other";
}
MessageBox::Show("Нажата клавиша " + sKey);
}
Рис 11. Окно с обработчиком нажатия клавиши клавиатуры (клавиши «Вправо»).
Что такое перо (Pen)?
Перо (Pen) – это один из инструментов рисования в окне приложения. Перо применяется при рисовании линий и контуров фигур. Классы, с помощью которых производится рисование, в частности, класс Pen, определены в пространстве имен System::Drawing. При создании пера задают его цвет и толщину (в пикселях (точках)). Например, создание пера голубого цвета и толщиной 2:
Pen^ pen=gcnew Pen(Color::Aqua,2);
Подпространство имен System::Drawing::Drawing2D содержит дополнительно средства для задания особых стилей пера, например, пунктирного пера:
Pen^ pen=gcnew Pen(Color::Aqua,2);
pen->DashStyle = DashStyle::Dash;
или штрих-пунктирного пера:
Pen^ pen=gcnew Pen(Color::Aqua,2);
pen->DashStyle = DashStyle::DashDot;
или с заданием специального «наконечника» линий:
// начало линии – наконечник в виде ромба, конец линии - круг
Pen^ pen=gcnew Pen(Color::Aqua,5);
pen->StartCap=LineCap::DiamondAnchor;
pen->EndCap=LineCap::RoundAnchor;
А) Б) В)
Г)
Рис 12. Использование пера ( А – обычное перо, Б – «пунктир», В – «штрих-пунктир», Г – разные «наконечники»).
Можно воспользоваться «системными перьями», которые определены в перечислении Pens. Название перьев в перечислении определяются названием цвета пера, например,
gr->DrawLine(Pens::Red,10,10,100,100);.