Статья: Создание приложений OLE 2
if (theApp->Printing && theApp->Printer && ! rect.IsEmpty()) {
// использовать pageSize для получения размера окна для визуализации информации
// для Window - это рабочая область,
// для принтера - это размеры контекста устройства и
// для print preview - это окно формата
TSize pageSize( rect. right - rect. left, rect. bottom - rect. top);
TPrintDialog::TData &printerData = theApp->Printer->GetSetup();
// вычислить число страниц, которые необходимо напечатать
printerData.MinPage = 1;
printerData.MaxPage = 1;
TOcView *ocView = GetOcView();
// Рисование TOcPart поумолчанию
TRect CLientRect = GetClientRect();
TRect logicalRect = clientRect + (TSize&)ocView->GetOrigin();
for (TOcPartCollectionlter i(GetOcDoc()->GetParts()); i; i++) {
TOcPart& p = *i.Current();
if (p.IsVisible(logicalRect)) {
TRect r = p.GetRect();
r -= ocView->GetOrigin();
p.Draw(dc, r, clientRect); // Нарисовать внедренный объект
if (p.IsSelected()) {
TUIHandle handle(r, TUIHandle::HandlesIn | TUIHandle::Grapples |
TUIHandle::HatchBorder, 5);
handle. Paint(dc);
} else {
TUIHandle handle(r, TUIHandle::HatchBorder, 5);
handle. Paint(dc);
}
}