Учебник по Visual C++ .Net




Класс для просмотра изображений


//====== Класс для демонстрации содержимого документов

class CRightView : public CScrollView {

//====== Упреждающее объявление класса картинок

friend class CWndGeom; protected:

CSize m_szView; // Реальные размеры окна

CSize m_szScroll; // Размеры прокручиваемого окна

CSize m_szltem; // Размеры картинки

CSize m_szMargin; // Размеры полей

CString m_WndClass; // Строка регистрации картинки

CRightView () ;

DECLARE_DYNCREATE(CRightView) public: //====== Контейнер картинок

vector<CWndGeom*> m_pWnds;

CTreeDoc* GetDocument()

{

return dynamic_cast<CTret=Doc*> (m_pDocument) ;

}

virtual -CRightView();

void Show(); // Демонстрация картинок

void Clear();

// Освобождение ресурсов

// Overrides public:

virtual void OnDraw(CDC* pDC) ;

protected:

virtual void OnlnitialUpdate() ;

DECLARE_MESSAGE_MAP() };

Внесите сокращения и изменения в коды реализации класса так, как показано ниже:

IMPLEMENTJDYNCREATE(CRightView, CScrollView)

BEGIN_MESSAGE_MAP(CRightView, CScrollView) END_MESSAGE_MAP()

CRightView::CRightView()() CRightView::-CRightView(){}

void CRightView::OnDraw(CDC* pDC)

{

CTreeDoc* pDoc = GetDocument(); ASSERT_VALID(pDoc);

}

Полосы прокрутки автоматически появляются, когда реальные размеры окна (m_szview) становятся меньше размеров прокручиваемого окна (m_szScroll), которые надо задать в качестве аргумента функции SetScrollSizes. Если пользователь увеличил размеры окна и они стали равными или больше тех, что были указаны, то полосы автоматически исчезают. Отсюда следует, что программист должен как-то задать первоначальные размеры m_szScroll, когда еще не известны требования к ним. Обычно это делается в функции OnlnitialUpdate. Просмотрите коды этой функции, и вы увидите, какие размеры прокручиваемого окна (по умолчанию) задал мастер AppWizard. Для слежения за размерами окна представления введите в класс CRightview реакцию на сообщение WM_SI ZE, так же как вы это делали в классе CDrawView. Измените коды этой функции, а также функции OnlnitialUpdate, в которой мы приравниваем начальные размеры прокручиваемого окна к реальным:




Содержание  Назад  Вперед