Глава 4
Теперь, когда мы создали класс "Поле боя", надо внести изменения в файл главного окна, в котором будет располагаться наше поле боя.
В заголовочном файле главного окна объявим три переменные класса Field:
CField m_OwnField, m_LetterO, m_NumberO;
В функции OnInitDialog() главного окна создадим три объекта класса Field:
hInst = AfxGetInstanceHandle();
m_OwnField.Create(NULL, WS_CHILD|WS_VISIBLE|SS_NOTIFY, CRect(30, 100, 230, 300), this);
m_NumberO.Create(NULL, WS_CHILD|WS_VISIBLE, CRect(30, 80, 230, 95), this);
m_LetterO.Create(NULL, WS_CHILD|WS_VISIBLE, CRect(10, 100, 25, 300), this);
BOOL CSeaBattle02Dlg::OnInitDialog()
{
HINSTANCE hInst;
RECT rect;
CDC* dc;
int i, j;
CBitmap bmp;
CPicture m_Fon;
m_OwnField.SetMode(OWN_FIELD);
m_NumberO.SetMode(NUMBERS);
m_LetterO.SetMode(LETTERS);
. . .
m_OwnField.SetParent(this);
. . .
}
Теперь откомпилируем и запустим. В главном окне мы увидим поле боя.
Скачать исходный код и exe-файл этой небольшой программы, в которой
мы сделали первые шаги по работе с графикой можно здесь:
Далее нам предстоит еще более интересная задача - сделать так, чтобы при движении курсора над полем боя вслед за курсором двигался корабль, а при клике левой кнопкой - корабль садился бы на свое место на поле боя. Чтобы при клике правой кнопкой, корабль разворачивался на 90 градусов по сравнении с предыдущим положением. Таким образом мы сможем заполнить наше поле боя десятью военными кораблями.
Назад |
Начало урока |
Вверх |
Вперед
Содержание