p>
// Реалізація olesvrOleView p>
// Створити таблицю для всіх
повідомлень/команд, які підтримуються olsvrOleView, p>
// похідним від TOleView p>
DEFINE_RESPONSE_TABLE1
(olesvrOleView, TOleView) p>
//
olesvr0leViewRSP_TBL_BEGIN p>
EV_WM_GETMINMAXINFO, p>
EV_OC_VIEWSHOWTOOLS, p>
//
olesvr0leViewRSP_TBL_END p>
END_RESPONSE_TABLE; p>
/////////////////////////////////////////////// ////////////////
p>
//
olesvrOleView p>
// Обробка створення/знищення p>
olesvrOleView:: olesvrOleView
(TDocument & doc, TWindow * parent) p>
: TOleView (doc, parent) p>
( p>
ToolBar = 0; p>
// вставити>> В цьому місці код
вашого конструктора p>
) p>
olesvrOleView:: ~ olesvrOleView () p>
( p>
// вставити>> В цьому місці код
вашого деструктора p>
) p>
// p>
// Процедура малювання для Window,
Printer і PrintPreview клієнта TOleView p>
// p>
void
olesvrOleView:: Paint (TDC & dc, bool erase, TRect & rect) p>
( p>
olesvrApp
* theApp = TYPESAFE_DOWNCAST (GetApplication (), olesvrApp); p>
if (theАрр) ( p>
// малювати тільки у випадку, якщо
необхідно що-небудь надрукувати або відобразити, p>
// інакше не робити ніяких
дій p>
if (theApp-> Printing & &
theApp-> Printer & &! rect.IsEmpty ()) ( p>
// використати pageSize для отримання
розміру вікна для візуалізації інформації p>
// для Window - це робоча область, p>
// для принтера - це розміри контексту
пристрої та p>
// для print preview - це вікно формату p>
TSize pageSize (rect. right - rect. left,
rect. bottom - rect. top); p>
TPrintDialog:: TData & printerData =
theApp-> Printer-> GetSetup (); p>
// вирахувати число сторінок, які
необхідно надрукувати p>
printerData.MinPage = 1; p>
printerData.MaxPage = 1; p>
TOcView * ocView = GetOcView (); p>
// Малювання TOcPart за замовчуванням p>
TRect CLientRect = GetClientRect (); p>
TRect logicalRect = clientRect +
(TSize &) ocView-> GetOrigin (); p>
for (TOcPartCollectionlter
i (GetOcDoc () -> GetParts ()); i; i + +) ( p>
TOcPart & p = * i.Current (); p>
if (p.IsVisible (logicalRect)) ( p>
TRect r = p.GetRect (); p>
r -= ocView-> GetOrigin (); p>
p.Draw (dc,
r, clientRect);// Намалювати впроваджений об'єкт p>
if (p.IsSelected ()) ( p>
TUIHandle handle (r,
TUIHandle:: HandlesIn | TUIHandle:: Grapples | p>
TUIHandle:: HatchBorder, 5); p>
handle. Paint (dc); p>
) else ( p>
TUIHandle handle (r,
TUIHandle:: HatchBorder, 5); p>
handle.
Paint (dc); p>
) p>
) p>
)
p>
// вставити>> В цьому місці
виконується друк p>
TOleView:: Paint (dc, erase,
rect); p>
) else ( p>
// вставити>> В цьому місці
виконується звичайне малювання p>
) p>
dc.TextOut (0,
30, "olesvr OLE Server"); p>
) p>
) p>
void
olesvrOleView:: EvGetMinMaxInfo (MINMAXINFO far & minmaxinfo) p>
( p>
olesvrApp
* theApp = TYPESAFE_DOWNCAST (GetApplication (), olesvrApp); p>
if
(theApp) ( p>
if (theApp-> Printing) ( p>
minmaxinfo.ptMaxSize = TPoint (32000,
32000); p>
minmaxinfo.ptMaxTrackSize = TPoint (32000,
32000); p>
return; p>
) p>
) p>
TOleView:: EvGetMinMaxInfo (minmaxinfo); p>
) p>
bool
olesvrOleView:: EvOcViewShowTools (TOcToolBarlnfo far & tbi) p>
( p>
// Сконструювати і створити панель
управління для відображення, знищити p>
// нашу панель для приховування p>
if
(tbi.Show) ( p>
if (! ToolBar) ( p>
ToolBar = new TControlBar (this); p>
olesvrApp * theApp =
TYPESAFE_DOWNCAST (GetApplication (), olesvrApp); p>
CHECK (theApp); p>
theApp-> CreateGadgets (ToolBar, true); p>
) p>
ToolBar-> Create (); p>
tbi.HTopTB = (HWND) * ToolBar; p>
)
else ( p>
if (ToolBar) ( p>
ToolBar-> Destroy (); p>
delete ToolBar; p>
ToolBar = 0; p>
) p>
) p>
return
true; p>
) p>
Список літератури h2>
Для підготовки даної роботи були використані
матеріали з сайту http://www.realcoding.net/
p>