Microsoft Visual C++ и MFC. Программирование для Win95 и WinNT


Для забывчивых пользователей


В ряде случаев пользователь может забыть сохранить внесенные им изменения документа в файле. Попробуйте отредактировать ранее сохраненный документ приложения Single, а затем создайте новый файл. Изменения документа сохранены не будут.

Класс CDocument и все классы, для которых он является базовым, позволяют установить специальный флаг модификации, означающий что документ изменен. В этом случае, перед закрытием документа пользователю будет предложено его сохранить. Для установки этого флага предназначен метод SetModifiedFlag. Вот прототип метода SetModifiedFlag:

void SetModifiedFlag(BOOL bModified = TRUE);

Если документ изменен, установите флаг модификации, вызвав метод SetModifiedFlag с параметром bModified, равным TRUE или без параметра. В случае необходимости вы можете убрать установленный флаг. Для этого надо вызвать метод SetModifiedFlag с параметром bModified, равным FALSE.

Мы должны добавить вызов метода SetModifiedFlag в методах OnLButtonDown и OnRButtonDown, выполняющих модификацию документа. Вызов метода можно разместить в любом месте, например, сразу после добавления к массиву arrayFig, представляющему документ, нового элемента.

//////////////////////////////////////////////////////////////

// Метод OnLButtonDown класса CSingleView

void CSingleView::OnLButtonDown(UINT nFlags, CPoint point)

{

      // ...

      // Добавляем к массиву, определяющему документ, новый

      // элемент

      pDoc->arrayFig.Add(OneFigure);



      // Устанавливаем флаг изменения документа

      pDoc->SetModifiedFlag();

      CView::OnLButtonDown(nFlags, point);

}

//////////////////////////////////////////////////////////////

// Метод OnRButtonDown класса CSingleView

void CSingleView::OnRButtonDown(UINT nFlags, CPoint point)

{

      // ...

      // Добавляем к массиву, определяющему документ, новый

      // элемент

      pDoc->arrayFig.Add(OneFigure);

      // Устанавливаем флаг изменения документа

      pDoc->SetModifiedFlag();

     

      CView::OnRButtonDown(nFlags, point);

}



Содержание раздела