Назад | Начало урока | Вперед
Содержание

Глава 1


void CField::SetParent(CWnd *wnd) {
RECT rect;
CBitmap bmp;
CDC *dc = GetDC();

m_Parent = wnd;
//получить клиентскую область окна (холст)
GetClientRect(&rect);
//сделать новый контекст устройства совместимым с реальным
//контектом устройства
WaterDC.CreateCompatibleDC(dc);
//сделать точечный рисунок совместимым с реальным
//контектом устройства
bmp.CreateCompatibleBitmap(dc, rect.right, rect.bottom);
//выбрать точечный рисунок в новый контекст устройства
pOld = WaterDC.SelectObject(&bmp);
::SendMessage(m_Parent->m_hWnd, WM_STATIC_TO_DLG, WM_FILL_DC, (LPARAM)&WaterDC);
ReleaseDC(dc);

}

Функция SetParent вызывается в коде главного окна приложения SeaBattleDlg.cpp в функции
BOOL CSeaBattleDlg::OnInitDialog() три раза:

m_OwnField.SetParent(this);
m_ForeignField.SetParent(this);
m_SaveDialog.SetParent(this);

Функция SetParent() вызванная объектом делает этот объект дочерним, к окну, указанному в параметре. Таким образом "Наше поле", "Вражеское поле", Диалоговое окно "Диалог" становятся дочерними окнами для главного окна приложения - CSeaBattleDlg.

В заголовке главного окна объявлены эти переменные:

public: CField m_OwnField, m_ForeignField, m_LetterO, m_LetterF, m_NumberO, m_NumberF;
private: CSaveDialog m_SaveDialog;


Назад | Начало урока | Вверх | Вперед
Содержание

Hosted by uCoz