Информационный сайт

 

Реклама
bulletinsite.net -> Книги на сайте -> Программисту -> Янг Майкл Дж. -> "Visual С++ 6. Полное руководство: В 2 т.(том2)" -> 159

Visual С++ 6. Полное руководство: В 2 т.(том2) - Янг Майкл Дж.

Янг Майкл Дж. Visual С++ 6. Полное руководство: В 2 т.(том2) — Бином, 2006. — 530 c.
Скачать (прямая ссылка): vicualcc2006t2.djvu
Предыдущая << 1 .. 153 154 155 156 157 158 < 159 > 160 161 162 163 164 165 .. 173 >> Следующая

AfxThrowMemoryException(); // любое исключение
// будет обработано
ASSERT_VALID(pltem) ;
// Если компонент создан из списка класса (не из файла), // то для его редактирования запускается сервер if (dig.GetSelectionType() == COlelnsertDialog::CreateNewItem) pItem->DoVerb(OLEIVERB_SHOW, this);
ASSERT_VALID(pltem);
// При разработке произвольного пользовательского интерфейса // используйте этот код для установки выделения последнего // внедренного компонента
// TODO: повторная реализация механизма выделения
m_pSelection = pltem; // выбрать последний
// внедренный компонент pDoc->UpdateAllViews(NULL) ;
t
CATCH(CException, e) (
if (pltem != NULL) {
ASSERT_VALID(pltem); pItem->Delete();
}
AfxMessageBox(IDP_FAILED_TO_CREATE);
)
END_CATCH EndWaitCursor() ;
}
// Следующий обработчик содержит стандартный клавиатурный
// интерфейс завершения редактирования на месте.
// Здесь контейнер (а не сервер) вызывает процедуру деактивации
void CContDemoView::OnCancelEditCntr()
(
// Закройте все активные элементы в этом представлении. COleClientltem* pActiveltem = GetDocument()->GetInPlaceActiveItem(this); if (pActiveltem != NULL) {
pActiveItem->Close();
}
ASSERT(GetDocument()->GetInPlaceActiveItem(this) == NULL);
}
// Обработчики OnSetFocus и OnSize, необходимые для // редактирования на месте в окне контейнера
void CContDemoView::OnSetFocus(CWnd* pOldWnd)
t
COleClientltem* pActiveltem = GetDocument()->GetInPlaceActiveItem(this); if (pActiveltem != NULL &&
pActiveItem->GetItemState() == COleClientltem::activeUIState)
(
// необходимо для установки фокуса на компонент, // если он находится в этом представлении CWnd* pWnd = pActiveItem->GetInPlaceWindow(); if (pWnd != NULL) {
pWnd->SetFocus(); // не вызывайте базовый класс return;
}
}
CView::OnSetFocus(pOldWnd);
}
void CContDemoView::OnSize(UINT nType, int cx, int cy)
i
CView::OnSize(nType, cx, cy) ;
COleClientltem* pActiveltem = GetDocument()->GetInPlaceActiveItem(this); if (pActiveltem != NULL)
pActiveItem->SetItemRects() ;
(
111111111111111111111111111111111111111111111111111111111111II111111111 II Диагностика класса CContDemoView
#ifdef __DEBUG
void CContDemoView::AssertValid() const {
CView::AssertValid();
}
void CContDemoView::Dump (CDumpContextS dc) const
(
CView::Dump(dc);
I
CContDemoDoc* CContDemoView::GetDocument() // неотладочная версия
// является встроенной
{
ASSERT(m_pDocument->IsKindOf(RUNTIME_CLASS(CContDemoDoc))); return (CContDemoDoc*)m_pDocument;
}
#endif //_DEBUG
11111111111111111111111111111111111111111111111111111111111111111111111 II Обработчики сообщений класса CContDemoView
Листинг 24.21.
// Cntrltem.h : интерфейс класса CContDemoCntrltem //
#if !defined!
AFX_CNTRITEM_H_726A17AF_AC7D_11D1_80FC_00C0F6A83B7F_INCLUDEDJ
#define AFX_CNTRITEM_H_726A17AF_AC7D_11D1_80FC_00C0F6A83B7F_INCLUDED
#if _MSC_VER > 1000 #pragma once
#endif // _MSC_VER > 1000
class CContDemoDoc; class CContDemoView;
class CContDemoCntrltem : public COleClientltem {
DECLARE_SERIAL(CContDemoCntrltem)
// Конструкторы public:
CContDemoCntrltem(CContDemoDoc* pContainer = NULL);
// ПРИМЕЧАНИЕ: для доступа к IMPLEMENT_SERIALIZE
// конструктору pContainer присваивается значение NULL.
// IMPLEMENT_SERIALIZE вызывает класс, конструктор которого
// имеет нулевое значение. Обычно, OLE-компоненты
// конструируются с ненулевым указателем документа
// Атрибуты public:
CContDemoDoc* GetDocument()
{ return (CContDemoDoc*)COleClientltem::GetDocument(); } CContDemoView* GetActiveViewO
{ return (CContDemoView*)COleClientltem::GetActiveView(); }
// Переопределения виртуальных функций, сгенерированные
// мастером ClassWizard
//{(AFX_VIRTUAL(CContDemoCntrltem)
public:
virtual void OnChange(OLE_NOTIFICATION wNotification, DWORD dwParam);
virtual void OnActivate();
protected:
virtual void OnGetItemPosition(CRect& rPosition); virtual void OnDeactivateUI(BOOL bUndoable); virtual BOOL OnChangeltemPosition(const CRect& rectPos); //}}AFX_VIRTUAL
// Реализация public:
-CContDemoCntrltem(); #ifdef DEBUG
virtual void AssertValid() const; virtual void Dump(CDumpContextS dc) const; #endif
virtual void Serialize(CArchiveS ar) ;
};
1111111111111111 III 1111111111111111111111111111111111111111111111111 11{{AFX_INSERT_LOCATION}}
// Visual С++ вставит дополнительные объявления // сразу перед предыдущей строкой
#endif
// !defined(
// AFX_CNTRITEM_H_726A17AF_AC7D_11D1_80FC_00C0F6A83B7F_INCLUDED_)
Листинг 24.22.
// Cntrltem.cpp : реализация класса CContDemoCntrltem //
#include "stdafx.h" #include "ContDemo.h"
#include "ContDemoDoc.h" #include "ContDemoView.h" #include "Cntrltem.h"
#ifdef _DEBUG #define new DEBUG_NEW #undef THIS_FILE
static char THIS_FILE[] = _FILE_;
#endif
11111111111111111111111111111111111111111111111111111111111111111111 It Реализация класса CContDemoCntrltem
IMPLEMENT_SERIAL(CContDemoCntrltem, COleClientltem, 0)
CContDemoCntrltem::CContDemoCntrltem(CContDemoDoc* pContainer) : COleClientltem(pContainer)
Предыдущая << 1 .. 153 154 155 156 157 158 < 159 > 160 161 162 163 164 165 .. 173 >> Следующая
Реклама
Авторские права © 2009 AdsNet. Все права защищены.
Rambler's Top100